1樓:匿名使用者
14,2的14次方-1為16383;若取13為最多表示8191.理論上是10000000,但沒必要0要兩個補碼,所以用它表示-128了
2樓:匿名使用者
9999=8192+1024+512+256+8+4+2+1=2^13+2^10+2^9+2^8+2^3+2^2+2^1+2^0所以需要14位補碼 10000000
二進位制:關於10000000如何表示-128的問題
3樓:熙苒
對的,有符號數 最高位是符號位。於是,計算機裡 +0 和 -0 編碼是不一樣的。計算機裡負數用補碼錶示,為的是減法可以用加法器執行。
10000000 那個1是表示負數,但整個值是 -128,這是特殊的規定。
就這一個值特殊。不能用尋常的減1求反判斷。這是為了讓有符號數,多1個有用的資料點,讓可描述的數值範圍從 -127 - +127 擴大到 -128 - +127。
只不過 把 -0 和 +0 合為 +0。
當然,一定要追問 怎麼算出 -128 的。需要增加1個更高位來考慮。考慮完了,再去掉那位。
負數在現代計算機裡一般用補碼錶示:最高位是符號位,其餘位為數字的原碼取反+1
1000 0000還原為原碼:
最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128
負數求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1 。
同一個數字在不同的補碼錶示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼錶示中,就是1111111111110001。以下都使用8位2進位制來表示。
與十進位制
(1)二進位制轉十進位制
方法:「按權求和」
【例】:
規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十
分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。
注意:不是任何一個十進位制小數都能轉換成有限位的二進位制數。
(2)十進位制轉二進位制
· 十進位制整數轉二進位制數:「除以2取餘,逆序排列」(除二取餘法)
【例】:
89÷2 ……1
44÷2 ……0
22÷2 ……0
11÷2 ……1
5÷2 ……1
2÷2 ……0
1· 十進位制小數轉二進位制數:「乘以2取整,順序排列」(乘2取整法)
【例】: (0.625)10= (0.101)2
0.625x2=1.25 ……1
0.25 x2=0.50 ……0
0.50 x2=1.00 ……1
.十進位制負數轉二進位制:「先取正數的二進位制值,再取反,加1」
【例】:(-31)10 = (1)2
31的二進位制數為11111,取反00000,加1得1。
與八進位制
二進位制數轉換成八進位制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進位制數的數字表示,不足3位的要用「0」補足3位,就得到一個八進位制數。
八進位制數轉換成二進位制數:把每一個八進位制數轉換成3位的二進位制數,就得到一個二進位制數。
八進位制數字與十進位制數字對應關係如下:
000 -> 0 | 004-> 4 | 010=8
001 -> 1 |005 -> 5| 011=9
002 -> 2 |006 -> 6 | 012=10
003 -> 3 |007 -> 7 | 013=11
【例】:將八進位制的37.416轉換成二進位制數:
3 7 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
【例】:將二進位制的10110.0011 轉換成八進位制:
0 1 0 1 1 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.0011)2 = (26.14)8
與十六進位制
二進位制數轉換成十六進位制數:二進位制數轉換成十六進位制數時,只要從小數點位置開始,向左或向右每四位二進位制劃分一組(不足四位數可補0),然後寫出每一組二進位制數所對應的十六進位制數碼即可。
十六進位制數轉換成二進位制數:把每一個十六進位制數轉換成4位的二進位制數,就得到一個二進位制數。
十六進位制數字與二進位制數字的對應關係如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> c
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> d
0010 -> 2 0110 -> 6 1010 -> a 1110 -> e
0011 -> 3 0111 -> 7 1011 -> b 1111 -> f
【例】:將十六進位制數5df.9 轉換成二進位制:
5 d f . 9
0101 1101 1111 .1001
即:(5df.9)16 =(10111011111.1001)2
【例】:將二進位制數1100001.111 轉換成十六進位制:
0110 0001 . 1110
6 1 . e
即:(1100001.111)2 =(61.e)16
請問1000 0000 0000 0000 代表有符號的16進位制數如何補碼運算,以及如何進行十進位制轉換?
4樓:手氣不錯
這個問題很簡單 樓主別想複雜:
樓主錯把化為10進位制搞成了化為補碼了。
化為10進位制和化為補碼是完全兩回事,因為補碼仍然是2進位制,是另一種2進製表示形式。
下面我將認為樓主要求2進位制補碼把這道題解一遍:
在解決這個問題之前,樓主需要明白的是,0用原碼錶示時有兩種表示
+0和—0 +0的是0000符號位是0 —0是1000 符號位是1
我要多說一句,補碼可以表示的範圍是除掉符號位後的 -2^n~2^n-1
如果你的原碼壓根不在這個範圍,就無法表示。
樓主提供的原碼是 1 000 0000 0000 0000, 這是原碼負0(—0)
而在補碼中,是沒有負0概念的,補碼的0和負0都是0.
所以樓主必須要化成+0,即0 000 0000 0000 0000 再來求補碼。
所以,您這道題出的本身就很奇怪。因為沒有哪個人用負0(—0)求補碼
如果您堅持要求的話,就按照我上面說的,化正求補。因為補碼只支援正0。
補碼是2進位制數表示法,不是10進位制。轉為10進位制和求補碼不一樣,樓主別混淆了
第二個問題:
我在前面已經說到1000 0000 0000 0000是二進位制時,才可以用除符號求反+1求2進位制補碼。
化成十六進位制時,從左到右每4位合成一位十六進位制位,因為2的4次方=16.
所以是(1000)2=(8)16 (0000)2=(0)16 最終結果是(8000)16依然從左到右
再補充一點給樓主:
為什麼4位2進製表示1位16進位制:
進位制之間的轉化的標準是 轉化之後他們所代表的值不變。
如16進位制中的10,在10進位制中,其實是16. 因為1^16=1^10+6
而2^4=16::0-15這16個數,就用4位來2進位制來表示,可以不重不漏。左邊一個16進位制數恰對應右邊一個4位的2進位制數。(這是數學上的排列,這個樓主肯定懂吧?)
樓主可能會問我為什麼高位也可以如此,那是因為×16^n 也等於×2^4^n嘛。
至於1000 0000 0000 0000怎麼樣去求10進位制,
1×2^12 = 1×10^... + 1×10^... 這樣求就ok
十進位制 52用8位二進位制補碼錶示為
十進位制 52用8位二進位制補碼錶示為?十進位制 52用8位二進位制補碼錶示為11001100。x 52d 110100b x 原 10110100b x 反 11001011b x 補 11001100b 在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理...
二進位制1到31表示法,二進位制資料表示方法
十進位制1至31的二進位制表示 0 01 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000 17 10001 18 10010 19 1...
用5位01表示二進位制數1位為符號位其他4位
另外那個回答是有問題的哈。另外給一個小技巧,判斷一個數的負數的補專碼是否正確,屬可以簡單將兩個數相加,除去進位如果是0,那就是對的。如下面將下面 7和 7的補碼相加,出去進位,剛好就是0 後面 13和 13的也是這樣子 十進位制數 7的5位二進位制補碼為00111,十進位制數 7的5位二進位制補碼為...