找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4110|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

二進制補碼就是這么回事

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74985 發(fā)表于 2015-3-21 03:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下內(nèi)容轉(zhuǎn)自百度知道,回答者:金的同位素。

            
    說到二進制補碼,大家都知道:有符號數(shù)的負(fù)數(shù)的補碼是 其正數(shù)的反碼+1,例如 10001111 的補碼是反碼01110000 加 1 =01110001 ,很多書都這么說,可是為什么這樣計算的結(jié)果就是它的補碼?為什么要用補碼?很多書要么不解釋,要么就是說:這是因為在計算機內(nèi)補碼計算最快。(其實是補碼計算指令的CPU設(shè)計更容易實現(xiàn)) 最初我看的書,《大學(xué)計算機基礎(chǔ)教程》(我非計算機專業(yè)),這破書說不清,道不明,給與我非常嚴(yán)重負(fù)面的影響,以至于我在以后的計算機學(xué)習(xí)過程中,程序設(shè)計中遇到大大小小不少麻煩和迷茫。
            
    在某些計算機組成原理書上提到:其實補碼的計算原理,是用一個模來減去無符號的正數(shù)部分。譬如時鐘,12點之后是13點,但是時鐘上沒有13點怎么辦?就用13減去12=1點。這個模是12.可惜這個比喻并不是很好。
            
    請看 一個字節(jié)長的無符號數(shù)的表示范圍 :0~255,有符號數(shù)的表示范圍:-128~127 , 注意,這個表示范圍的寫法極有可能影響我們的思維,從而導(dǎo)致錯誤。我們應(yīng)該這樣來寫:0~127 ~ -128 ~ -1 ,這才是較好的寫法。為什么?因為這個寫法的數(shù)的順序與0~255 一一對應(yīng)。
            
    由上,我們了解,其實補碼不過是用128 ~ 255 這段范圍的數(shù)來表示 ~128 ~ -1這段范圍的負(fù)數(shù)。那么我們就可以憑自己,而不是看教材,就可以推測出計算補碼的公式,就是:256-欲求的負(fù)數(shù)的絕對值= 此負(fù)數(shù)的補碼。
            
    沒錯,就是這么簡單的東西,可是卻困擾了很多人�?梢娪袀€好的教材是多么的重要。
            
    至于前面 “負(fù)數(shù)的補碼是 其正數(shù)的反碼+1” , 極為垃圾的教材才會把這個計算方法作為初始方法來教。因為這個計算方法屏蔽了補碼的計算原理。其實這不過是 “256 - 欲求的負(fù)數(shù)的絕對值 = 此負(fù)數(shù)的補碼”的一個比較取巧的計算方法而已。請看 256=1 0000 0000 =1111 1111+1,而 1111 1111減任何二進制數(shù)的結(jié)果就是把這個數(shù)取反,那么 256 - 某二進制數(shù)A 既是:將 A取反 +1
            
以上:完畢!
            
注:所有討論均在字節(jié)長范圍內(nèi)(8bit) 進行

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:656070 發(fā)表于 2019-12-10 11:31 | 只看該作者
學(xué)習(xí)了,不錯不錯,有見解
回復(fù)

使用道具 舉報

板凳
ID:97023 發(fā)表于 2020-2-21 18:25 | 只看該作者
受教了,謝謝,不過這一段可能打字出錯了:
“由上,我們了解,其實補碼不過是用128 ~ 255 這段范圍的數(shù)來表示 ~128 ~ -1這段范圍的負(fù)數(shù)。那么我們就可以憑自己,而不是看教材,就可以推測出計算補碼的公式,就是:256-欲求的負(fù)數(shù)的絕對值= 此負(fù)數(shù)的補碼。”
其中:“~128 ~ -1這段范圍的負(fù)數(shù)。”
是否應(yīng)該為:“-128 ~ -1這段范圍的負(fù)數(shù)�!�
第一個符號應(yīng)該是:“-”
如有不當(dāng),請忽略。
回復(fù)

使用道具 舉報

地板
ID:149799 發(fā)表于 2020-2-21 21:30 | 只看該作者
是不是總數(shù)0~255,以正負(fù)127的中點,即128點作為0點,把129作為+1,把127作為-1。把總數(shù)的0點作為-127點,是不是這個意思,望大師解答。
回復(fù)

使用道具 舉報

5#
ID:562994 發(fā)表于 2020-2-24 03:04 來自觸屏版 | 只看該作者
終于明白了,謝謝。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表