国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

補碼、原碼、反碼

2019-11-08 01:41:44
字體:
來源:轉載
供稿:網友

補碼、原碼、反碼

原碼:就是數字的二進制表現形式。

17:10001

28:  11100

二進制轉十進制:系數*2n

n是從右往左,從0開始計數。

1     1     1     1     1     1     1     1

1     0     1     1     0     1     1     0

快速運算:每一位都是前一位的2的倍數,將遞增規律帶入二進制中,可以迅速的算出結果。

1     0     0     0     0     0     0     0     0     28

1     1     1     1     1     1     1     1  八位二進制能表示的最大數

=                                                      1

1     1     0     1     0     1     1     1     使用減法運算

255 – 32 -8 = 215;.

正數的原碼:二進制的表現形式,最高位是0

負數的原碼:

絕對值的二進制數據,符號位變為1.

5:   0000 0101

-5:  1000 0101

 

在計算機中,數據都是補碼形式存在的。

正數的補碼、反碼和原碼一致。

負數的反碼:

       最高位(符號位)不變,然后其他位取反(0變1,1變0)

負數的補碼:

       反碼+1;

       原碼最高位不變,然后其他位取反,再加1.

因為計算機中,數據都是補碼形式存在,那么當對這些數據進行位運算的時候,就應該是對他們的補碼來進行運算,而不是針對原碼運算。

       例子:

              -10>>2=

              1000 1010->轉補碼:11110110 >>2 =11111101à轉回原碼

                                                                                      10000011=-3

為什么使用補碼就可以達到減法運算的目的呢?

這里提出一個模概念:取值范圍,當表示的數據超過了范圍,超過范圍的數據不要了。

簡單的說,從8到2,我們一般是用8-6=2沒問題,但是我們用加法怎么達到這個目的呢?我們可以這樣,從8開始數,8、9、10、11、12,OK,到現在已經是12了,個位是2,因為我們的局限范圍是個位,那么把十位的1扔掉,就剩下了2,這樣是不是達到目的了?

再舉個例子,時鐘從3點到1點,我們只需要逆時針撥動2個格即可,但是,我們順時針撥動10個格是不是也到達1點了?

計算機中因為電路設計的問題,無法使用減法,那么就使用補碼的加法運算,來達到原碼減法的結果。

1111 1111

+1

=1 00000000   //這個1超過了數據表示范圍,不要了,那么他的值是0

 

1111 1111

+10

=1 00000001

舉個例子,以8位進制數進行運算:

30-10 = 20

原碼:

0001 1110        //30

-      1000 1010       //10負數的原碼是其正數原碼最高位取反

變成補碼進行運算,發現最高位超出了,那么就舍去,因為該最高位不在本次運算數據表示范圍

0001 1110

+  1111 0110

1 00010100

轉回原碼:00010100 –>20


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴文县| 楚雄市| 司法| 浦江县| 确山县| 揭阳市| 连江县| 崇礼县| 南宁市| 马山县| 宜昌市| 安乡县| 永安市| 合作市| 合川市| 兰考县| 新野县| 安图县| 长武县| 尉氏县| 中西区| 揭东县| 贞丰县| 西宁市| 宜川县| 涿鹿县| 泾源县| 富锦市| 大冶市| 蒙城县| 博白县| 贵德县| 安塞县| 宿州市| 青田县| 连山| 齐齐哈尔市| 凭祥市| 宜宾市| 靖边县| 三江|