(這裡對定義不再贅述,直接記錄計算方法和心得。)
原碼:
非常直觀的機器碼,與真值差別不大。
正數前補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...