Java中的原碼 補碼 反碼與位運算子

2021-08-21 14:54:04 字數 934 閱讀 1304

1.原碼

計算機中可以用1個/4個/8個/最高位來表示負數 假設使用乙個最高位老表示則0表示整數 1表示負數

正整數:10:   0000 1010

負整數:-10: 1000 1010

2.反碼

正整數:和原碼一樣                           10:  0000 1010

負整數:符號位不變,其餘按位取反  -10 :1111 01 0 1

3.補碼

正整數:和原碼一樣10:  0000 1010

負整數:反碼加一    -10:1111   0110

計算機中沒有原碼與反碼只有補碼(補碼計算精確)

例如10-10=0利用原碼計算 1001 0100不等於10

補碼計算 1 0000 0000 1跑到了8個位之外所以捨棄了結果是00000000等於0

所以我們以補碼的形式來儲存

位運算子有&   |   ^ << >>  

a=a^b;

b=b^a;

a=a^b;

通過這個可以實現a,b的交換 

將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。

例:a = a<< 2將a的二進位制位左移2位,右補0,

左移1位後a = a *2; `

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。

例如 求2*8就相當於將2<<3(0000 0010  變成0001 0000)

例如14<<2等於(0000 1110比變成0011 1000)等於14*4=56

將乙個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

運算元每右移一位,相當於該數除以2。

例如:a = a>> 2 將a的二進位制位右移2位,

左補0 or 補1得看被移數是正還是負。

原碼 反碼與補碼

在計算機內,定點數有3種表示法 原碼 反碼和 補碼。所謂原碼就是 二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。反碼表示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。補碼表示法規定 正數的補碼與其原碼相同 負數的補碼是在其反碼的末位...

補碼 原碼與反碼

古人說得好 溫故而知新 可惜現在都忙於 知新 沒有太多的時間去回顧原來的知識了。直到今天,遇到了實際問題,才突然感覺到原來很多東西在記憶中已經非常模糊,記不清了。溫故 系列主要是以的文章 觀點為主,也就是說多數將會是轉貼文章,因為這些基礎知識總會得到專家關注的,而且專家的解釋也會比我清楚得多。原碼 ...

原碼 補碼 反碼以及位運算

2 位運算 機器數是乙個數在計算機中的二進位制表示形式,機器數是帶符號的,在計算機中用乙個數的最高位 第一位 存放符號,正數為0,負數為1。例如1 帶符號即 1 在計算機中的最終表示形式為 0000 0001,依此類推 1的二進位制為 1000 0001。這種表示方式又叫做原碼,其中0的原碼為000...