帶符號數的編碼

2021-08-01 12:02:43 字數 1122 閱讀 1144

(這裡對定義不再贅述,直接記錄計算方法和心得。)

原碼:

非常直觀的機器碼,與真值差別不大。

正數前補0,後面照抄;負數前補1,後邊照抄。

小數相同處理方法。

反碼:

解決負數加法運算問題,將減法運算轉換為加法運算。

正數前補0,後面照抄;負數前補1,真值部分0變1,1變0(-1001 -> 11001 -> 10110(結果))。

補碼:

用來計算加減法非常方便。容易算錯。

正數前補0,後面照抄(1001->01001(結果));負數前補1,後面真值0變1,1變0,最後一位+1(-1001 -> 10110+1=10111(結果))。

小數相同處理方法。

&:補碼求真值:正數前去0,照抄;負數整個補碼0變1,1變0,最後一位+1(10111 -> (01000+1=01001) -> 1001(結果))。

移碼:

專門用來表示整數的機器碼。

正數符號位是1,數值位不變;負數符號位是0,數值位0變1,1變0,最後一位+1。

串聯:

真值 - > 原碼 -> 反碼 -> 補碼 -> 移碼

1010 01010 01010 01010 11010

-1010 11010 10101 10110 00110

關於0的表示:(n=5)

原碼: +0=00000 -0=10000

反碼: +0=00000 -0=11111

補碼: +0=00000 -0=10000 -> 11111+1 -> 100000 ->00000(高位溢位)

移碼: +0=10000 -0=00000 -> 01111+1 -> 10000

綜上:原碼,反碼表示0有兩種;補碼,移碼表示0有一種。

由上一模組所述,當用四中編碼表達乙個數(n=5)時,都有2^5的使用範圍。但由於原碼,反碼用兩種數來表示』0』,而補碼,移碼只用乙個數表示,所以範圍就多了乙個……

明確點說,-10000,原碼反碼沒辦法表示(n=5)。

但是補碼可表示成10000,移碼可表示成00000。

推導:-15=11111,-1=10001,-16=-15-1=11111+10001=110000 ->10000

帶符號數的編碼 原碼 反碼 補碼

為什麼要引入帶符號數 在數制轉換中整數和小數部分不太一樣,類似的,正負數編碼方式不同,所以需要規定帶符號數 signed binary numbers 編碼規則 最高位為符號位,0為正,1為負,其餘位為數值位 範圍 二進位制正負數的一般定點 浮點有其他方法 方法 原碼反碼補碼在符號位是相同的 正數的...

帶符號數的表示

上一節,我們學習了進製計數制及其相互轉換,這次我們來看下計算機中帶符號數的表示 在一般算術表示中使用 和 來表示正數與負數,而在計算機中使用 0 和 1 來表示正數和負數 用 或 表示正負的數叫真值 用 0 或 1 表示正負的數叫機器數 原碼表示 二進位制數的最高位表示符號,0表示正,1表示負,數值...

Verilog 帶符號數操作

1 之前的筆記寫過 補碼 可知在fpga綜合成電路的時候最底層都是以補碼的形式在運算,正數的補碼就是本身,負數的補碼要取反 1。2 那麼verilog中程式設計的時候對程式設計人員來說,其實想不到現在的編譯器 quartus ii 9.1和ise10.1沒有問題,更高的版本應該更加可以了 都支援ve...