為什麼補碼 10000000 的真值是 128

時間 2021-06-04 14:52:06

1樓:[已重置]

建議去看一下計算機組成原理,計算機有原碼,補碼和反碼三種,原碼和反碼是不能表示-128的,補碼可以表示-128因為-1]+[-127]=[10000001]原+[11111111] 原=[11111111]補+[10000001]補=[10000000]補=-128 相當於[-0]原但是不能由它反推-0的原碼!

2樓:hengjin xu

這是個好問題。

有符號的二進位制的表示分為兩種方式,原始碼和補碼(具體定義自行search吧,我不搬磚了)

我從為神魔計算機裡用的是補碼不是原始碼這個角度回答下題主的問題原始碼:0000 0000: 正0

0111 1111:正127

1000 0000:負0

1111 1111:負127

關於負0,實際是白佔一坑,就把它用來表示-128了。

如果用原始碼做加減計算會帶來不連續問題,比如1 + (-1):

0000 0001 + 1 000 0001 = 1000 0010成為了-2

補碼能完美的解決這種問題,碰巧原始碼1000 0000的補碼還是它本身。

3樓:冒泡

題目不嚴謹,嚴格來說是「8bit二進位制補碼的***表示-128」

首先,符號位是1,表示是負數

其次,確定絕對值,採用取負運算,即取反加一,得10000000=2**7=128

所以是-128

至於有人問上面兩個***為啥乙個是-128乙個是128,這個問題可以細品下

4樓:格式化

有符號二進位制數第一位為符號位,0表示正,1表示負,其餘所有位為數值位樓主所提的***顯然不是代表-128,而是-128的補碼。

-128的原碼 10000000 (-128,進製被捨去)-128的反碼 11111111(負數的非符號位取反)-128的補碼 10000000+ 1=10000000(反碼+1),這裡實際上真正相加的是***後面的7位,第1位是符號位始終不會變,所以,當進到第8位的時候,就表示溢位被捨棄。

補碼10000000為什麼可以表示 128?

還沒想好啊 前幾天才想了這個問題,我的理解是這樣的 要是有不對的地方還希望指出 時鐘有12格,乙個指著3點的時針要是想撥到6點,可以選擇順時針撥3,或者逆時針撥9,達到的效果完全一樣,其實就是3和 9對於mod12來說是一樣的,也叫做3和 9同餘。那麼對於8位二進位制數,模的數就變為2 8 256,...

128的補碼1000 0000,看了很多文章,還是不太懂?

saltarea 不要管原碼,補碼這些名詞。8位二進位制數從0x00到0xff,有256種狀態,能夠對應256個數,如果表示無符號數,就能表示0 255這256個十進位制數。如果表式有符號數,我們用它表示0到128,和 128到 1的數,這有乙個非負非正數0 127個正數,128個負數,二進位制數0...

補碼轉換為原碼,為什麼是先取反再加1?

NaN 首先我們考慮一下負數實際上是什麼。比如8位二進位制數,8位二進位制有256種可能,所以最多可以表示256種數字。如果是無符號的情況,這樣的數字可以表示0到255。那麼256呢?255 1會是什麼情況呢?眾所周知,255的二進位制形式是1111 1111,而256的二進位制形式是1 0000 ...