[教學] 計概 二進位整數表示方法(補數系統)

一般二進位整數表示方法有幾種: 1.無號數 2.有號數 (1) sign bit表示法 (2) 1's compliment(1的補數) (3) 2's compliment(2的補數) ---- 1. 就我們一般學的二進位,因為無號數,所以只能表示正數 eg: 5 = 0101 ; 11 = 1011 (以4 bits為例) 4 bits所能表示資料的範圍 0 ~ 2^4 - 1 n bits 0 ~ 2^n - 1 2. (1) sign bit表示法 這個也很直觀,最左邊的位元不表示數值,拿來表示正負號 eg: 5 = 0101 ; -5 = 1101 (以4 bit為例) 4 bits所能表示資料的範圍 - (2^3 - 1) ~ (2^3 - 1) n bits - (2^(n-1) - 1) ~ (2^(n-1) - 1) (2) 1's compliment(1的補數) 如果是正數,就轉成一般二進位就好,如果是負數,再把它取1的補數 eg: 5 = 0101 ; -5 = 1010 (以4 bit為例) 4 bits所能表示資料的範圍 - (2^3 - 1) ~ (2^3 - 1) n bits - (2^(n-1) - 1) ~ (2^(n-1) - 1) (3) 2's compliment(2的補數) 如果是正數,就轉成一般二進位就好,如果是負數,再把它取2的補數 eg: 5 = 0101 ; -5 = 1011 (以4 bit為例) 4 bits所能表示資料的範圍 - 2^3 ~ (2^3 - 1) n bits - 2^(n-1) ~ (2^(n-1) - 1) 而現今最常用的都是二的補數表示法,因為二的補數表示法可以比其他有號數表示法 多表示一個數。(請看n bits所能表示的範圍,自己做個比較就會發現了) 原因是因為 sign表示和1的補數表示法都會存在+0和-0 ,可是這是兩個相同的東西 所以就會浪費掉一個表示的空間,2的補數無法表示-0,所以負數可以多表示一個 至於,大家會問是不是最左邊是1就一定是負數?! 答案是對的,因為正數最左邊一定是0,取二的補數,一定會變成1。 此外,二的補數表示法,要轉成十進位方法有兩種。 1.先把二的補數表示式轉成一般二進位,再轉成十進位,再依正負號,決定正負 eg: 1011 (2's) = - 0101 (2) = -5 (10) 2.公式解: 假設此二進位為 Bn Bn-1 ...B1 B0 n-1 那此二進位的十進位會等於 (- 2^n x Bn) + Σ (B (k) x 2^k) k=0 證明我就省略了。這個方法很好用!!所以值得背起來(對正負數都可直接轉換) eg: 1011 (2's) = - 2^3 x 1 + 2^2 x 0 + 2^1 x 1 + 2^0 x 1 = -5 (負數) 0011 (2's) = - 2^3 x 0 + 2^2 x 0 + 2^1 x 1 + 2^0 x 1 = 3 (正數) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.65.87
inisilver:推@@ 01/15 23:31
推文自動更新已關閉

留言

這個網誌中的熱門文章

[閒聊] 女生會觀察男生手上的手錶嗎?

[翻譯] Nosleep-一群變態鎖定觀看YouTube的孩童