二進制轉化、<<、>>、>>>移位運算


參考資料:

https://www.cnblogs.com/wxb20/p/6033458.html

https://www.cnblogs.com/joahyau/p/6420619.html

https://www.cnblogs.com/yulinfeng/p/6602902.html

https://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html

https://www.cnblogs.com/xkfz007/articles/2590472.html(帶小數)

一、十進制轉化二進制

1、正數轉化:

  正數25:

25/2  12  1
12/2  6  0
6/2  3  0
3/2  1  1
1/2  0  1

 

 

 

 

最后一列,倒序排列即為二進制值。   

則:25的二進制為:11001 然后32位,高位補0,即:

0000 0000 0000 0000 0000 0000 0001 1001

2、負數轉化:

  負數-25

1、先算出正數的二進制。

2、求反碼,即二進制中1變0,0變1

3、反碼+1

所以-25

1、對應的正數25對應的二進制為:

0000 0000 0000 0000 0000 0000 0001 1001

2、反碼:

1111 1111 1111 1111 1111 1111 1110 0110

3、反碼+1:(補碼)(如果最后一位本身為1,則進位,列如1011  +1  為1100)。

1111 1111 1111 1111 1111  111 1110 0111

即為-25的二進制表示值。

二、二進制轉化十進制

1、正數轉化(不夠32位高位補0)

011 1001

654 3210

則為:0*2^6+1*2^5+1*2^4+1*2^3+0*2^2+0*2^1+1*2^0=0+32+16+8+0+0+1=57

2、負數轉化(最高位為1則為負數)

1、先算反碼,即二進制中1變0,0變1

2、反碼+1(補碼)

3、算出對應的正數在加上負號。

例:

1111 1111 1111 1111 1111 1111 1010 1111

反碼:

0000 0000 0000 0000 0000 0000 0101 0000

反碼+1(如果最后一位本身為1,則進位,列如1011  +1  為1100)。

0000 0000 0000 0000 0000 0000 0101 0001

算正數:

1*2^6+0*2^5+1*2^4+0*2^3+0*2^2+0*2^1+1*2^0=64+0+16+0+0+0+1=81

即十進制為-81.

3、八進制、十六進制、十進制、二進制

01111111111111111111111111111001

十進制負數轉八進制、十六進制

負數轉換成八進制、十六進制,只需在補碼(二進制)的基礎上,3位合成一位計算,或者4位合成一位計算

-3的轉換成二進制為:

1111 1111 1111 1111 1111 1111 1111 1101

八進制則將-3的二進制從右至左每3位為一個單元,不夠三位用0補 即:

011 111 111 111 111 111 111 111 111 111 101

計算每一個單元,結果為:37777777775

十六進制則將-3的二進制從右至左每4位合並為一個單元,即:

1111 1111 1111 1111 1111 1111 1111 1101

計算后為: FFFFFFFD

轉換十進制-3為八進制和十六進制

十六進制(0,1,2,3,4,5,6,7,8,9,A,B,C,D,F)

三:>>,<<,>>>移位運算

1、<< 

<<,有符號左移位,將運算數的二進制整體左移指定位數,低位用0補齊。

正數:5<<2

1、轉化為二進制:

0000 0000 0000 0000 0000 0000 0000 0101

2、整體左移指2位數

0000 0000 0000 0000 0000 0000 0001 0100

3、轉化為十進制

1*2^4+1*2^2=16+4=20

M<<N相當於M*2^n.

負數:-5<<2

1、轉化為二進制:

1111 1111 1111 1111 1111 1111 1111 1011

2、整體左移指2位數

1111 1111 1111 1111 1111 1111 1110 1100

3、轉化為十進制

-20

M<<N相當於M*2^n.

2、>>

>>有符號右移位,將運算數的二進制整體右移指定位數,正數高位用0補齊,負數高位用1補齊(保持負數符號不變)

正數:5>>2

1、轉化為二進制:

0000 0000 0000 0000 0000 0000 0000 0101

2、整體右移指2位數

0000 0000 0000 0000 0000 0000 0000 0001

3、轉化為十進制

1*2^0=1

M>>N相當於M/2^n 取商

負數:-5>>2

1、轉化為二進制:

1111 1111 1111 1111 1111 1111 1111 1011

2、整體右移指2位數

1111 1111 1111 1111 1111 1111 1111 1110

3、轉化為十進制

-2

M<<N相當於如果運算數是偶數,那么那么它的運算結果就是 x = -(|x| / 2),如果運算數是奇數,那么它的運算結果就是 x = -(|x| / 2) - 1

3、>>>

>>>無符號右移位,不管正數還是負數,高位都用0補齊(忽略符號位)

1、正數的>>>無符號右移位和>>有符號右移位計算結果相同

2、負數

-5>>>2

1、轉化為二進制:

1111 1111 1111 1111 1111 1111 1111 1011

2、整體右移指2位數

0011 1111 1111 1111 1111 1111 1111 1110

3、轉化為十進制

1073741822

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM