二進位制中補碼的理解

2022-10-11 13:27:10 字數 776 閱讀 2783

先從熟悉的十進位制說起:1,2,3,4,5,6,7,8,9代表正數(前面+號可以省略),-1,-2,-3,-4,-5,-6,-7,-8,-9代表複數,0唯一。其中,前面的+號和-號代表的實際上是人為規定分別代表正數和負數,後面的數進行數值運算。兩個正數相加仍是正數,兩個負數相加仍是負數,乙個正數乙個負數相加,則比較絕對值大小,前面符號位為絕對值更大的那個。

再說二進位制中,為了區分正數和負數,編碼時第一位作為符號位,0代表正數,1代表負數。

按最初的想法,舉個例子,比如+4,+5用二進位制表示:

0 0100  0 0101

-4,-5用二進位制表示:

1 0100  1 0101

但此時發現乙個問題,4+(-4),5+(-5)應該都是0,但兩者的相加結果卻是不一樣的,實際上,在這種規則下,0也是不唯一的:會有+0,-0出現,這顯然是不合理的,這本質上是因為前面的符號位實際上是碼制,但卻參與了數值運算,兩種不同規則的運算摻雜所導致的,為了解決這個問題,就必須讓符號位也同時作為乙個權值,參與到數值運算中來。1仍代表負數,0代表正數。符號位的權重為-2^(n-1),這樣才能實現負數,其餘為為正的權值,其餘位依次為:2^(n-2),...,2^1,2^0。

以4位二進位制補碼為例,負數為1000~1111,代表-8到-1,0000代表0,0001~0111代表1到7,一共16位。此時,我們取+5,-5相加,結果為0101+1011=0,此時的0是唯一的。這樣,最高位仍能代表符號位,同時也可以參與數值運算。

此外,正數的補碼與原碼相同,+5:0 0101  -5:1 1011 ,負數的補碼為數值位每位取反,然後+1即可。

二進位制補碼

二進位制補碼 計算機儲存資料都是以0,1二進位制進行儲存。對於有符號整數儲存 對於浮點數待續 引入補碼概念。原碼即直接將真值轉換為其相應的二進位制形式,而反碼和補碼是對原碼進行某種轉換編碼方式。對於正整數,原碼,反碼和補碼都相一樣 對於負整數,補碼等於反碼加1,而反碼等於原碼除符號位不變其他位按位求...

二進位制補碼

計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,正如 亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘自 數學發展史 有空大家可以看看哦...

二進位制補碼

二進位制補碼主要是為了解決負整數的加減法運算 減法轉化為加法 原碼表示法就是用二進位制的最高位表示符號,0表示正數,1表示負數。以8位為例 1就是表示為0000 0001,1表示為1000 0001.而補碼的規則是正整數保持不變,針對負整數,除符號位外,其他位全部取反,然後 1。注 負整數中,原碼轉...