1. 程式人生 > 其它 >如何求原始碼,反碼,補碼

如何求原始碼,反碼,補碼

一文搞懂如何計算原始碼,反碼,補碼

最近有朋友問起這些,於是就簡單的講一下吧(只講求法,沒有包含真正的意義)。

原始碼怎麼求

//原碼就是早期用來表示數字的一種方式,用最高位表示符號位,最高位為‘1’表示負號,‘0’表示正號。其他位存放該數的二進位制的絕對值

正數的原始碼就是本身的二進位制表示,負數的原始碼就是它的絕對值的原始碼,然後把最高位(符號位) 置1

舉例說明:

int型別的 5 的二進位制表示為 101B(B表示二進位制位), 在32位機器上佔四個位元組,那麼高位補零就得原始碼為:

00000000 00000000 00000000 00000101

int型別的 -5 的原始碼就是5的原始碼,然後給最高位換成‘1’

10000000 00000000 00000000 00000101  

    

反碼怎麼求 ?

//正數的反碼就是原碼,負數的反碼等於原碼除符號位以外所有的位取反

舉例說明:

int型別的 5 的反碼是

00000000 00000000 00000000 00000101

int型別的 -5 的反碼是

11111111 11111111 11111111 11111010

除開符號位 所有位 取反

補碼怎麼求?

//正數的補碼與原碼相同,負數的補碼為其原碼除符號位外所有位取反,然後最低位加1(也就是反碼加1)

舉例說明:

int型別的 5 的補碼是:

00000000 00000000 00000000 00000101

int型別的 -5 的補碼是

11111111 11111111 11111111 11111011

就是其反碼加1

好了最後問問小夥伴 -107的原始碼,反碼,補碼你會求了嗎?

//原始碼
1000 0000 0110 1011
//反碼
1111 1111 1001 0100
//補碼
1111 1111 1001 0101

    

本文只是簡單的講了一下原始碼、反碼、補碼的求法,至於它們的深層意義同學們可以參考這個部落格
https://www.imooc.com/article/16813?block_id=tuijian_wz

寫在最後

本人才學尚淺,發部落格的主要目的是為記錄自己的學習過程,幫助自己更好的鞏固基礎,也希望這些小的知識點可以為小夥伴們帶來一點幫助,如果有說的不對的地方,歡迎大家在評論區指出。最後希望小夥伴們可以點個推薦,多多支援,感謝。