十进制与二进制之间转换详解
文章目錄
- 十進制與二進制之間轉換詳解
- (一)十進制數轉二進制數
- 1.1 十進制正整數轉二進制
- 1.2 十進制負整數轉二進制
- 1.3 十進制小數轉二進制數
- (二) 二進制數轉成十進制數
- 2.1 二進制整數轉十進制
- 2.1 二進制小數轉十進制
- (三)十進制正整數轉八進制
十進制與二進制之間轉換詳解
(一)十進制數轉二進制數
1.1 十進制正整數轉二進制
【基本原理】:除基數倒取余數法。
即:十進制轉二進制,基數就是2,用2整除一個十進制正整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數;如此進行,直到商為0;然后把先得到的余數作為二進制數的低位有效位,把后得到的余數作為二級制的高位有效位,依次排列起來。所謂有效位,就是不算前導0;
例如:輸入十進制正整數:150
150
#include<iostream> using namespace std; int main() {int i, j;//定義循環變量;int a[1005];//定義一個儲存二進制的數組;int num;cin >> num;//輸入需要轉換的10進制正整數;for (i = 0; num != 0; i++){a[i] = num % 2;//對num取余.......就是除以2的余數;num = num / 2;//......每次取余之后num除以2的商;}for (j = i - 1; j >= 0; j--)//倒序輸出余數,即為二進制數;{cout << a[j];}cout << "\n";return 0; }for (j = i - 1; j >= 0; j–)
這里解釋一下這句為什么是 (j=i-1),例如輸入150,執行完循環之后 i=8;,但a數組的最后一個元素的下標是7(數組下標從0開始),所以i要減一;
1.2 十進制負整數轉二進制
【方法】:先將十進制負整數對應的十進制正整數轉換成二進制后,對二進制逐位取反(即:0變成1,
1變成0),然后對結果加1(當然是二進制運算);
1.3 十進制小數轉二進制數
【方法】:對小數點以后的數×2,取結果的整數部分,然后再用小數部分再×2,再取結果的整數部分……以此類推,直到小數部分為0。然后把取的整數部分按先后次序排列,就構成了二進制小數部分的序列。
例:
0.125
注:如果十進制小數的整數部分有大于0的數時,將整數部分轉成二進制,小數部分也轉成二進制,加在一起就好了。
例:
150.125
(二) 二進制數轉成十進制數
2.1 二進制整數轉十進制
【基本原理】:按權展開求和法。
【方法】:首先將二進制數補齊位數(8位),首位如果是0就代表是正整數,如果首位是1則代表是負整
數。
(1).補齊位數以后,若首位是0的正整數,將二進制中的各位數與各自的權相乘,然后求和。
例:
11010
(2).補齊位數以后,若首位是1的負整數,就先將其逐位取反,再將二進制中的各位數與各自的權相乘,然后求和。
例:
11101110
2.1 二進制小數轉十進制
【方法】:按權展開求和法,但和二進制整數轉十進制的權不一樣。
例:
0.1101
(三)十進制正整數轉八進制
【基本原理】:與十進制正整數轉二進制一樣,除基數倒取余數法。
直接看代碼:
150
總結
以上是生活随笔為你收集整理的十进制与二进制之间转换详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CIMPLICITY 历史数据存储及趋势
- 下一篇: 木材加工(LintCode)