計算機表示正負數

2021-07-04 10:28:43 字數 747 閱讀 8494

國內很多教材都有其為本科教材,對於計算機表示負數大概只有一句話,「取反加一」,並稱之為「補碼」。今天偶然翻閱資料,覺得是時候徹底解決一下這個問題了。

首先「二進位制補碼」只是人為定義的乙個概念,與「黃赤交角」一樣。不是在說明問題的本質,而是在解釋解決問題的辦法。計算機表示負數,運用的是「溢位原理」。

溢位原理,舉例說明,如8位計算機暫存器。  0000 0000(

2)= 0

(10)同時

1 0000 0000(

2)= 0(10)所以

1111 1111 + 0000 0001 = 0000 0000,下面說明 -8 在計算機中的表示,表示方法為  -8 = 0-8

0-8 = 1111 1111 - 0000 1000 + 0000 0001 = 1111 1000,所以 1111 1000 就是-8 在計算機中的表示。於是乎,人們就總結了2條規律:1. 負數在計算機中的表示為 取反+1,取反+1成為這個數的二進位制補碼。2.最高位為符號位,1負,0正。

又引出乙個重要的問題,是關於0的。0在數學中不存在正負,但如何解釋可能出現在暫存器中的這兩個數?

1000 0000 = -0 ??  0000 0000 = +0 ??  計算得知,8位暫存器取值範圍是  -127至 -0  +0至+127,於是認為規定,

1000 0000 = -128,0000 0000 = 0.這樣規定使得在8位暫存器中,-128 沒有與之對應的正數,但權衡利弊,這已經是最佳解決方案。至今所有計算機,指令集也遵循這套方案。

計算機中正負數表示

在32位系統中,int型別佔4個位元組,一共是32個2進製位,int型別的首位是符號位,0代表正數,1代表負數,int的最大值是0x7fffffff 即除了最高的1bit其他31位都為1 而最小值是0x80000000 除了最高1bit,其他31位都為0 但是我有幾個問題,在這裡記錄解答一下 關於補...

大數相加(分正負數)

給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a b sample input68932147586 468711654886sample output537643802472 includ...

FPGA中正負數和定點小數的表示方法

在日常生活中,我們常常需要到正數與負數,比如南北兩級氣溫常年為零度以下,這個時候我們就需要負數來表示溫度。那麼在fpga工程裡面也是這樣,我們如果想要做溫度監測工程,自然而然的就會需要到負數來表達零下的溫度。當然fpga中除了數字正負的表達,還需要用到小數。在加減乘除的運算中,小數的出現是不可避免的...