說在前面的話:
對于補碼多數(shù)人都是大學里面深深印在腦子里的一句話"正數(shù)的補碼是其本身,負數(shù)的補碼是符號位不動,其余位按位取反加1",對于這句話當時并沒有想太多,理性對自己的感性說"就是這么規(guī)定的,不要多想了".后來看書又接觸到了補碼,不禁想想這句話和補碼的原始定義究竟如何貫通呢?
正文開始:
人產(chǎn)生了疑惑,覺著不通透,根本是感性和理性不能貫通了,前面關(guān)于求出負數(shù)補碼是一種感性理解,當遇到了真正數(shù)學對于補碼的定義,二者不能互相融會貫通,就不爽了,那么下面看一下補碼的數(shù)學定義.

對于數(shù)學定義,標示佩服,舉一個例子,就四位二進制數(shù)來說,從-8到7,都可以用最高位作為負權(quán)位來表示,也就是說在-8到7之間整數(shù)與此公式標示的二進制數(shù)是一一對應且唯一的.在此表示對數(shù)學的欽佩,想說明一個法則具有普遍的適應性,數(shù)學似乎是唯一的方式.
疑惑來了:
既然這個公式和上面的那句話都可以得出負數(shù)補碼,那么二者究竟是怎么貫通在一起的呢?理解了這個問題就打通了感性與理性,心中對補碼的疑惑也就不存在了,學知識還是盡量到達這個程度比較好.
分析:
通俗(感性認知)理解補碼:例如,-1的補碼怎么樣才能在算數(shù)的時候產(chǎn)生他的意義呢,-1+1必須等于0,那么-1的補碼才有意義,或者說得到補碼之后,-1+1的結(jié)果不能改變,那么看看-1的補碼1111,加上0001得到10000,只看四位,那么就是0了,顯然如此的完美,當然用上面的公式做出普遍意義的證明是比較容易的,大家可以試試.
理性理解補碼:
-1為例,先看按位取反加1的過程,1001,符號位不動,按位取反得到1110,加1,也就是1111,這是-1的補碼,分步來看,其實,先不看符號位,按位取反也就是0110,這相當于0111-0001 然后加1,0111+0001=1000,所以也就是1000-0001 = 0111,再加上符號位的1就得到了1111這個補碼,換句話說也就是-8+7 = -1,那么看看補碼數(shù)學定義的公式,也就是負權(quán)位的1與0111之和.
所以按位取反加1這種方法就是這個公式的規(guī)律性用法,為什么這么說呢?這里的取值范圍是-8到正7,那么以正8為"鏡子",也就是1000,想求-1的補碼,那么就1000-0001得到與1互補的正數(shù),然后加上負權(quán)位,自然就得到了-1,進一步通俗的理解就是,按位取反就是+1就是為了拿1000這個鏡子去映射出"能夠和負權(quán)位相加得到 當前負數(shù)絕對值所對應負數(shù)的 正數(shù),類似于互補角,或者說成:是為了得到此負數(shù)絕對值,在此區(qū)間的互補數(shù)",所以說按位取反+1這種方式就是在變相的用公式得出結(jié)果,本質(zhì)還是公式的定義.個人覺得這個辦法反而讓人產(chǎn)生疑惑,因為沒有給出原理,只是告訴了方法.
總結(jié):
應該說理解了按位取反+1就是公式的方便記憶和使用,本質(zhì)還是公式的唯一性且一一對應,那么也可以理解為啥正數(shù)的補碼是其本身了,因為正數(shù)最高權(quán)位是0,根本沒有變化,現(xiàn)在想想還是從數(shù)學的角度去認知類似事物比較好,沒什么可模糊疑惑糾纏的.
說在后面的話:
關(guān)鍵的地方在于按位取反+1就是得到了,此負數(shù)絕對值,在此區(qū)間的互補數(shù),然后加上負權(quán)位.