本文目錄一覽:
- 1、java 移位 問題
- 2、>1」和「-1>>>1」有何差別?’ title=’java移位運算問題:「-1>>1」和「-1>>>1」有何差別?’>java移位運算問題:「-1>>1」和「-1>>>1」有何差別?
- 3、Java移位運算符問題
- 4、JAVA的移位運算
- 5、java 移位運算
- 6、JAVA移位問題
java 移位 問題
1.為什麼,我直接操作上面定義的i,不會報錯呢?
答:當然不報錯。因為移位操作默認對其它進制先轉換成二進制再通過二進制運算的。
i3 ;
2.在定義一個變量
int temp = 0 ;
//這時候的temp等於多少?
temp |= (i3) ;
答:
i3=i*2 的3次方 為8
temp |= (i3) ;就相當於temp=temp|8-0|(0000…1000)轉換為二進制-8
>1」和「-1>>>1」有何差別?’>java移位運算問題:「-1>>1」和「-1>>>1」有何差別?
這個是帶符號右移
這個是無符號右移
-1的二進制反碼錶示為 11111111 11111111 11111111 11111111
-11的結果是 : 1111111 1111111 11111111 1111111
-11的結果是: 01111111 11111111 1111111 11111111
無符號右移後前面補0,而帶符號右移是補符號位,也就 是第一位,負數補1,正數補0
Java的優點:
java是純面向對象編程的語言;
平台無關性 (一次編譯,到處運行;Write Once,Run Anywhere);
java提供了許多內置的類庫,通過這些類庫,簡化了開發人員的設計工作,同時縮短了項目開發時間;
提供了對Web應用開發的支持,例如,Applet,Servlet,和JSP可以用來開發Web應用程序,Socket,RMI可以用來開發分佈式應用程序的類庫。
Java移位運算符問題
有符號右移會保留最高位的符號位,從次高位開始逐位右移填0;而無符號右移會將符號位一起右移,並將高位全部填0。
例:對於一個byte類型的數10010100來說,有符號右移2位變為10000101,而無符號右移2位變為00100101。前者仍然是一個負數,而後者變成了正數。
左移只有有符號的,沒有無符號左移。
JAVA的移位運算
全錯。
在java中,對byte型進行位移操作,那麼在移位進行之前,它們會自動轉換成一個int,得到的結果也是int
第一題-17:11111111
11111111
11111111
11101111
(無符號右移2位)後為
00111111
11111111
11111111
11111011
=
1073741819
同上
第二題為:00011111
11111111
11111111
11111010
第三題為0
java 移位運算
「系統先用b對32求余」 看這句了嗎。
int 一共32位,移32時,已經全部是0。
你希望只移32位,b就不要多於32。開始移位之前做一下判斷。
JAVA移位問題
將-1轉換為2進制就是所有位上全為1
向右移10位所有位上依舊為1
所以其實b的值並沒變還是-1
所以第二次輸出的時候還是相當於Integer.toBinaryString(-1)
還是32個1
最有1次輸出是把轉換出來的2進制數右移10位所以是22個1
其實此時b的值並沒有改變還是-1
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/233849.html