為什麼補數能實現符號比特參與運算? 如題,我想知道通俗易懂的解釋,特別是負數的補數參與運算 你的回答也是我這段時間學習得出的結論,的確,把補數與數直接對應起來,將補數賦予該數的含義要好理解一些

為什麼補數能實現符號比特參與運算? 如題,我想知道通俗易懂的解釋,特別是負數的補數參與運算 你的回答也是我這段時間學習得出的結論,的確,把補數與數直接對應起來,將補數賦予該數的含義要好理解一些


本人認為這個問題是當初的多此一舉把人們繞糊塗了.設計補數的初衷就是要表示數據的各位都參與運算,在給定的字長下配合一定的溢出規則來得到正確的結果.你就不要認為有補數存在,比如一位元組的十進位26編碼是00011010,而-26的編碼則是11100110就行了,不要認為11100110是00011010求補數得到的不就好理解了?我們完全可以理解為正負數的編碼是不同的就是了.要不然為什麼正數的補數不變,只有負數才要求補呢?一直不理解理論家們當初為什麼要這樣繞一下,把好多人搞糊塗了……



8比特有符號數的補數表示範圍


範圍是-128至127.根據補數的幾條規定即可推出上述結論:1若二進位每位全為0,則表示數02若最高位(即符號比特)為0,表示正數3若最高位為1,表示是負數,而該負數的絕對值是多少呢?將每個二進位比特(包括符號比特)取反…



在有符號數中1000 0000是正數還是負數?它的補數是什麼?


這個數是負數.並且是-128.比如,用對於8比特有符號數,7比特表示數據比特,第8比特是符號比特的話,它能表示的有符號十進位數範圍是-128-127.特別提醒一點,對於表示的最小的數,也就是最小的負數,比如這裡的-128,它的數據比特是全為0,…



請問1000 0000 0000 0000代表有符號的16進制數如何補數運算,以及如何進行十進位轉換?
在對其進行十進位轉換時,是不是要對後面的15為進行取反,變為1111 1111 1111 1111,然後再加1,變成1 0000 0000 0000 0000,這樣就變成17比特了啊,請問這是怎麼回事,或者正確的是如何該如何理解的啊?


這個問題很簡單樓主別想複雜:
樓主錯把化為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



補數如何運算
我是菜菜
詳細點····


求補數運算要有區別的:1對於正數其原碼=補數2對於負數寫出其原碼來,然後按比特取反(符號比特除外,符號比特為最高位),然後加1,即可.比如對於32比特字的-8其原碼1000 0000 0000 0000 0000 0000 0000 1000取反1111 111…



補數計算
諾某整數的16比特補數為FFFFH,則該數的十進位為多少我怎麼感覺-1和65535都符合要求可是答案卻是-1求詳解(另為-128補數怎麼算符合比特最高位怎麼搞)


首先,叫你計算補數,最好的管道不是將這個16進制的數轉換為10進制,而是將其轉換為2進制.回到這個題目,正確的想法應該是FFFF(H)=1111111111111111(B),也就是將其轉換為2進制考慮問題.這個2進制數的補數首位是1,…



補數運算中沒有負溢出嗎?
比如-0.01111-0.00101=?


-0.01111-0.00101=?
此題沒有溢出!
因為:
-0.01111補數:1.10001
-0.00101補數:1.11011
相加:
1.10001+1.11011=1.01100
1.01100原碼:-0.10100
只有當減數與被減數的符號相反,但是結果與減數符號相同時,才產生溢出



看了補數的運算,不是很明白,誰能幫我列一下-54-30的補數運算?


-54-30系統會看作是-54+(-30),以8比特為例:
[-54]補=11001010
[-30]補=11100010
+)-----------------
10101100(進位丟棄)
[-84]補=10101100
所以,-54-30=-84



關於補數的運算
在運算時,都是拿補數相加的,那萬一兩個正數的補數相加:01XX+01XX,那麼最左邊一比特,被右邊一比特進位了(0變成了1),不就是1了嘛,這是負數了.


12XX



8比特補數可表示定點小數的範圍


-1~+(1-2^(-7))
也就是:-1~+0.1111111