2013-02-21 541 views

回答

4

負整數通常以2的補碼錶示形式存儲,這意味着作爲m位數的-x被存儲爲2 m -x。這就是名字two的補充來自:添加x結果在兩個完整的權力。

假設我們使用32個比特,-3存儲爲2 -3 = 4294967293.

所以,-3×-3 = 4294967293×4294967293 = 18446744047939747849.但這數目不適合32位。它溢出了,我們剩下最後的32位。這些位自然編碼數字9.

你想看到它在二進制?好。 -3是2 -3是11111111111111111111111111111101 。

11111111111111111111111111111101×11111111111111111111111111111101 = 
1111111111111111111111111111101000000000000000000000000000001001 
     (32 msb)       (32 lsb) 

結果的最低的32位是00000000000000000000000000001001 ,這是數字9

+0

完美解釋!雖然,我想更多地瞭解2m-x,因爲我提到的這本書沒有提及它。感謝您的幫助。 – 2013-02-22 06:30:36

+0

使用m位整數進行計算是以2πm爲模的計算來實現的,所以-x和-x + 2^m是相同的東西。 – Joni 2013-02-22 07:07:46