二進制


二進制

​ 計算機中的數據均以二進制形式保存。二進制跟十進制相似,但是只有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 補充

以上是正整數的十進制與二進制的轉換,那么負整數呢?正分數和負分數呢?

  1. 負整數

    首先我們要了解十六位的二進制能代表的范圍:

    • 無符號是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. 小數

    1. 二進制轉換成十進制

      小數部分依次乘以2的負幾次方

      問題:0.001(2)= ____(10)

      0 * 2-1+0 * 2-2+1 * 2-3 = 1/8 = 0.125

      答案: 0.125(10)(保留5位小數)

    2. 十進制轉換成二進制

      小數部分乘以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的話要用兩個字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM