學計算機的請進!不翻書不搜索,a=~1024+1 ; a 的值是多少?

如題a的值是多少呢?答案是a=1024。什麼是不是覺得有點神奇。這是學計算機的基礎知識是關於數是如何在計算中如何表示的問題。下面我們來看看為什是1024呢?

數的表達

計算機中的數表示都是二進制表示,在計算機的眼裡正負數是都是0和1的組成,符號本身也是數值化的。通常採取最高位表示符號,0表示為正,1表示為負數。常用的編碼有原碼、補碼、和反碼。而我們現在的計算機採用的就是補碼。

補碼正數的表示以最高位有效位為0,其餘表示數的絕對值。如在8位的機器中 [+1] = 00000001,那麼負數如何表示呢?負數等於 2的n次方,這裡的n是機器的位長, 減去它的絕對值,如[-1] = 2^8-1 = 11111111。

那麼有沒有更快的方法求負數的補碼呢?答案是肯定的 ,只需將正數按位取反然後加1就得到正數的補碼了,如1的補碼是 0000 0001 按位取反後得 1111 1110 再加1 得 1111 1111 結果跟上面一致的。

通過上面我們可以發現同樣的原理正數的補碼也是可以通過負數求得,運算的方法跟通過正數求負數的一致,也就是說 ~x +1 = -x,這就是我們書上說的求補運算,這也是a=~1024+1 ;a=1024 的原因。

數表示成補碼後計算機就可以直接按二進制的加法運算進行計算了,也不需管數是正數還是負數的問題,因為符號本身也符號化了。


分享到:


相關文章: