1 若用二進位制數表示所有4位十進位制數,至少需要幾位二進位制數

2021-04-19 08:34:41 字數 3808 閱讀 3873

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位二進位制補碼為...