計算機的內存都是以二進制的形式進行數據存儲:
>>以十進制為參考點:
1.十進制轉二進制:39(10)=100111(2)
例:39/2 = 19 1
19/2 = 9 1
9/2 = 4 1
4/2 = 2 0
2/2 = 1 0
1/2 = 1 1
從下往上數100111
???數轉換的特征
10→2: (57.75)10 = (111001.110)2
整數部分 57/2 1 小數部分
0.75*2 1
28/2 0 (1.5-1)*2 取 1
14/2 0 (1.0-1)*2 取0
7/2 1
3/2 1
1/2 1
於小數部分的一定要正取,整數部分的要逆取。
2. 十進制轉八進制:358(10)=546(8)
例:358/8 = 44 6
44/8 = 5 4
5/8 = 0 5
3. 十進制轉16進制:120(10)=78(16)
例:120/16 = 7 8
7/16 = 0 7
特征:
>>其他進制轉十進制:
1. 二進制轉十進制:
111101(2)= 1*2的0次方+ 0*2的1次方 + 1*2的2次方 + 1*2的3次方 + 1*2的4次方 + 1*2的5次方
= 1*1+ 0*2+ 1*4+1*8+ 1*16 +1*32
= 1+ 0 + 4+ 8+ 16+ 32
= 61(10)
例:01.101(2)=?(10)
開始把0.101轉換成10進制的。
小數點后面的“1”,處於負一位,后面的“0”處於負二位,在后面的“3”處於負三位,
因為是2進制的轉換成10進制的,那么0.101=1*2的-1次方+0*2的-2次方+1*2的-3次方=0.5+0+0.125=0.625
將整數部分的和小數部分的相加,5+0.625=5.625 即101.101(2)=5.625(10)
8進制,16進制轉換10進制,將“1*2的-1次方+0*2的-2次方+1*2的-3次方”里面的乘號后面的“2”分別換成“8”和“16”就好了。其余的都雷同上述。
2. 八進制轉十進制:
224(8)=148(10)
224:
第0位 4*8的0次方 = 4
第1位 2*8的1次方 =16
第2為 2*8的2次方 =128
3. 16進制數轉換成10進制數
2AF5(16)=10997(10)
16進制數2AF5的第0位為“5”,第1位為“F”, 第2位為“A” 第3位為“2”
第0位 5*16的0次方 =5
第1位 F*16的1次方 =240
第2位 A*16的2次方 =2560
第3位 2*16的3次方 =8192
@7
在2進制中只有2個數字,既1,0
在8進制中只有8個數字,既0,1,2,3,4,5,6,7
在10進制中有10個數字,既0,1,2,3,4,5,6,7,8,9
在16進制中有10個數字和6個字母,既0,1,2,3,4,5,6,7,8,9和A,B,C,D,E,F,
字母A代表數字10,字母B代表數字11,字母C代表數字12,字母D代表數字13,字母E代表數字14,字母F代表數字15,
>>二進制轉換16進制:
1.制轉換為十六進制,因為2的4次方等於16,所以4個二進制就等於一個十六進制。
1001=1*2的0次方+1*2的3次方=9
1111=1*2的0次方+1*2的1次方+1*2的2次方+1*2的3次方=15=F
1110=1*2的1次方+1*2的2次方+1*2的3次方=14=E
0001=1*2的0次方=1
1111011111001=1EF9
原理: 四位二進制數寫成: b3 b2 b1 b0
1 --- 有一個 1 (2^0 =1)
1 --- 有一個 2 (2^1=2)
1 --- 有一個 4 (2^2=4)
1 --- 有一個 8 (2^3=8)
這叫作權 (8,4,2,1)
就如同十進制數的個十百千一樣。
二進制 十進制 16進制
0000=0=0
0001=1=1
0010=2=2
0011=3=3
0100=4=4
0101=5=5
0110=6=6
0111=7=7
1000=8=8
1001=9=9
1010=10=A (10)
1011=11=B (11)
1100=12=C (12)
1101=13=D (13)
1110=14=E (14)
1111=15=F (15)
2.制轉換八進制:
二進制 數可以用1位 八進制 數表示
列表如下
二進制 八進制
000 0
001 1
010 2
……
111 7
如果是多位,就從低向高數,每3位二進制數分在一組,表示一個八進制數,比如二進制1011表示為八進制為13,二進制011001111表示為八進制為317
>>負數的二進制表示方法
假設有一個 int 類型的數,值為5,那么,我們知道它在計算機中表示為:
00000000 00000000 00000000 00000101
5轉換成二制是101,不過int類型的數占用4字節(32位),所以前面填了一堆0。
現在想知道,-5在計算機中如何表示?
在計算機中,負數以其正值的補碼形式表達。
什么叫補碼呢?這得從原碼,反碼說起。
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。
反碼是相互的,所以也可稱:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互為反碼。
補碼:反碼加1稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然后將反碼加上1,所得數稱為補碼。
比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。
那么,補碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉換為十六進制:0xFFFFFFFB。
再舉一例,我們來看整數-1在計算機中如何表示。
假設這也是一個int類型,那么:
1、先取1的原碼:00000000 00000000 00000000 00000001
2、得反碼: 11111111 11111111 11111111 11111110
3、得補碼: 11111111 11111111 11111111 11111111
可見,-1在計算機里用二進制表達就是全1。16進制為:0xFFFFFF
>>二進制的運算方法:
二進制數的運算方法 同十進制都屬於 進位 運算方法,它們有類似的地方,當然也有不同的地方,二進制下只有加法。乘法和減法是變相的加法,除法只是簡單地移位。
首先,簡單的說明一下,什么是進位 運算方法? 十進制含有的數是 0 1 2 3 4 5 6 7 8 9 十個數, 而二級制只有兩個數 0 1
比方說十進制數1234=1x10^3 + 1x10^2 + 3x10^1 + 4x10^0
其中1 2 3 4 分別居在 千位 十位 百位 個位 。
同樣的二進制數 里也存在一樣的位制
二進制化十進制
二進制的1010 =1 x 2^3+ 0 x 2^2 + 1 x 2^1+ 0 x 2^0 = 10 (十進制)
同 理十進制化為二進制 :10(10)=1 x 2^3+ 0 x 2^2 + 1 x 2^1+ 0 x 2^0 =1010(2)因為我們不能較快的獲 得有多少個 2^0 2^1 2^2 2^3 2^4 2^5 2^6 ........2^n 所以才有短除法這一形式來輔助運算 除2取 余法
10/2=5.......0
5/2=2........1
2/2=1........0
1/2=0........1 把結果倒過來寫就是1010了
以上是進制的轉換。
加法:
下面就是加法的運算
十進制下有 二進制下就有
1234 1011
+ 2846 + 1111
—--.--.—--- ------.-.-.------
4080 11010
總的來說 二進制下和是十進制的運算時一樣的,
十進制下滿十進一,二進制下滿二進一。
減法 有兩種方式 以下是特殊情況 注意第一位是符號位。 0代表正數, 1 代表負數
。。 另一種方式是吧減法當成加上一個負數
0 1 0 0 1 0 1001
- 0 1 1 1 1 《===》 + 1 0001
---------------- ------------------。------
1 1 0 1 0 算的結果是負數 1 1010
負數與成正數互化就是取反加一
取反 0 1 0 1
+ 1
---------------
負的 0 1 1 0 =負的 0x2^3+1x^2+1x2^1+0x2^0= 負6
表示方法是取反加一 前面的第一位是符號位 1 代表負數 1 1110
乘法111x111= 1 1 1
x 1 1 1
--------------------------------
1 1 1
1 1 1
+ 1 1 1
-----------------------------------
1 1 0 0 0 1
除法:
1 1 1 1 / 1 0= 111
1111 / 11 = 101
除法和十進制的出發類似 不同的是這里是不會出現小數的 就像例子中的1 1 1 1 / 1 0= 111 化成十進制是 15除以2 但是結果卻是111=7 因為那個余數1 已經被擠出去了,這里涉及到了計算機的內存問題 這就不深究 知道怎么算就好了
以0x開始的數據表示16進制,計算機中每位的權為16,即(16進制)10 = (10進制)1×16