補碼符號位的權重
補碼的由來
由於原碼在進行編碼時採用了數制與碼制相結合的方法,即最高位符號位採用0代表正數,1代表負數的碼制編碼方式,低位採用帶有相應權重的數制編碼方式進行編碼;而碼制是不能進行算術運算的,這就會出現5的原碼0_0101,加上-5的原碼1_0101,等於1_1010而不是等於0;而且會出現正零0_0與負零1_0的表達方式,但實際並不存在正零和負零,造成編碼的浪費;
補碼權重
由於原碼所存在的問題,就出現了補碼,補碼等於原碼按位取反加一,補碼採用數制編碼方式進行編碼,最高位(符號位)雖然依舊是0代表正數,1代表負數,但是卻有權重,權重位-2n;如下圖所示:
這也很好理解八位補碼中10000000(-128)為什麼是最小的,因為最高位的權重為負,而其它位的權重為正,其它為一,就會使求和的結果的數值增加;
補碼轉十進位制,十進位制轉補碼
由於補碼符號位具有權重,那麼補碼便可以直接轉化位十進位制數,例如:
10110110
=1*(-27)+0*(26)+1*(25)+1*(24)+0*(23)+1*(22)+1*(21)+0*(20)
=-128+32+16+4+2
=-74
1101.0110
=1*(-23)+1*(22)+0*(21)+1*(20)+0*(2-1)+1*(2-2)+1*(2-3)+0*(2-4)
=-8+4+1+0.25+0.125
=-2.625
相比於把補碼轉化成原碼在轉化成十進位制快很多;
十進位制轉補碼運算時採用反碼加一也是比較方便,只是注意在對帶有小數的原始碼取反之後,所加的這個一是加在最右邊那一位之上的;
比如:
-2.625
2.625=110.101
原碼:1110.101
反碼:1001.010
得補碼=1001.011
當然也可以不經過反碼;
-2.625=-4+1+0.25+0.125=1*(-22)+1*(20)+1*(2-2)+1*(2-3)
所以補碼=1001.011
比如:
-93=-128+32+2+1=1*(-27)+1*(25)+1*(21)+1*(20)
所以補碼為10100011
補碼位數的擴充套件就是符號位擴充套件
補碼進行位數的擴充套件,直接在高位擴充套件符號位即可,正數最高位擴充套件0大小不變,而負數的補碼n位補碼為1010……1101,則最高位的權重為-2n-1,當擴充套件成n+1位補碼11010……1101時,變化的就是最高位權重以及次高位的權重,最高位的權重為-2n,而次高位權重為2n-1,這兩位求和為1*(-2n)+1*(2n-1)=-2n-1;大小不變;所以補碼擴充套件位數直接對符號位進行擴充套件即可;
在對補碼進行十進位制轉化時可能得到簡化,比如:
1111011101=1011101=-26+24+23+22+20=-64+16+8+4+1=-35
相關文章
- pycharm 取消空格,逗號 等符號的自動補全PyCharm符號
- 計算機中帶符號的整數為何採用二進位制的補碼進行儲存?計算機符號
- python 負數去掉符號位Python符號
- 18 位無重複訂單號生成程式碼
- C# 給Word中的字元新增強調符號(著重號)C#字元符號
- Linux檔案許可權符號含義Linux符號
- Java的識別符號與編碼規範Java符號
- math-as-code數學即程式碼:數學符號和程式碼符號有什麼異同?符號
- 理解二進位制原碼、反碼、補碼
- [C]有符號數和無符號數符號
- 補充行業程式碼欄位行業
- PostgreSQL版的身份證號碼15位轉18位SQL
- package.json 中的版本號,符號 ~ 與 ^ 的區別及其他符號的含義PackageJSON符號
- CSS @ 符號CSS符號
- 符號(註釋符+轉義符+接續符)符號
- JS歷理 特殊符號轉義十進位制編JS符號
- LinkedHashSet_重複號碼
- 計算機二進位制中的原碼,反碼,補碼計算機
- 二進位制原碼、反碼、補碼詳解
- 連結使用的符號符號
- Html/CSS的符號學HTMLCSS符號
- HTML 中的特殊符號HTML符號
- python的識別符號Python符號
- 字元編碼及空白漢字佔位符字元
- dotNet符號檔案(pdb),符號包(snupkg)和SourceLink符號
- 負數補碼(16進位制轉10進位制的負數)
- SCSS % 佔位符CSS
- 符號連結符號
- 流程圖符號流程圖符號
- 找不到符號符號
- 識別符號符號
- python 中 *符號Python符號
- 數學符號的來歷符號
- (2)使用的數學符號符號
- latex 中的存在,任意, ξ 符號符號
- Yaml中特殊符號"| > |+ |-"的作用YAML符號
- Room & Kotlin 符號的處理OOMKotlin符號
- Verilog有符號數、無符號數之間的賦值與運算符號賦值