二進制
計算機中的數據均以二進制形式保存。二進制跟十進制相似,但是只有0,1,逢2進1,十進制中的2就是二進制中的10。
1 十進制與二進制的轉化
1.1 二進制轉換成十進制:
1110 (2)= 1 * 23+1 * 22+1 * 21+0 * 20 = 14
1.2 十進制轉換成二進制
問題:12(10)= ____(2)
這時候我們可以利用短除法,對十進制除以二取余,然后倒序排列得到二進制:
12%2 = 0·········· (1)
6%2 = 0············(2)
3%2 = 1············(3)
1%2 = 1············(4)
答案: 1100(2)
1.3 補充
以上是正整數的十進制與二進制的轉換,那么負整數呢?正分數和負分數呢?
-
負整數
首先我們要了解十六位的二進制能代表的范圍:
-
無符號是0000 0000 0000 0000到1111 1111 1111 1111,轉換成十進制是0~65535
-
有符號的時候第一位是符號位,0表示正數,1表示負數,其余為數值位。
-
對於原碼,最小值是1111 1111 1111 1111,最大值是0111 1111 1111 1111,轉換成十進制是-32767~32767。
最小值:1111 1111 1111 1111(2) =
\[\frac{(1-2^{15})\cdot1}{1-2} \]=-32767 (10)
最大值:0111 1111 1111 1111(2) =
\[\frac{(1-2^{15})\cdot1}{1-2} \]=32767 (10)
-
對於反碼,只是數值位取反,符號位不變,所以數值不會變。
-
而對於補碼,由於0的補碼是固定的唯一的就是0000 0000 0000 0000,所以1000 0000 0000 0000表示的並不是0,而是
最小值-32768。為什么呢?因為在計算機中只有加法,而1000 0000 0000 0000實際上是溢出一位,應該是1 1000 0000 0000 0000,它的值為-215 = -32768。所以他的取值范圍是1000 0000 0000 0000到0111 1111 1111 1111,即-32768~32767。正數的補碼、反碼都是原碼本身。
-
-
-
小數
-
二進制轉換成十進制
小數部分依次乘以2的負幾次方
問題:0.001(2)= ____(10)
0 * 2-1+0 * 2-2+1 * 2-3 = 1/8 = 0.125
答案: 0.125(10)(保留5位小數)
-
十進制轉換成二進制
小數部分乘以2,取整數部分,直至乘積沒有小數部分,然后按序排放。例如:
問題:0.12(10)= ____(2)
0.12 * 2 = 0.24··········0(1)
0.24 * 2 = 0.48··········0(2)
0.48 * 2 = 0.96··········0(3)
0.96 * 2 = 1.92··········1(4)
0.92 * 2 = 1.84··········1(5)
······
答案: 0.00011(2)(保留5位小數)
-
2 字節(byte)
我們都知道 int 類型占用4個字節,lang類型占用8個字節,字節類型占用一個字節,那么一個字節在二進制要如何表示呢?
在計算機中一個字節由八位二進制表示,所以最大是1111 1111 (255)超過255的話要用兩個字節。