解讀JAVA中的位運算操作
1、名詞解釋
首先,位移運算僅針對整數(shù),非整數(shù)不支持位移運算。
- ①<<:左移操作符,低位補0。
- ②>>:算數(shù)右移符,高位補符號位。
- ③>>>:邏輯右移符,高位補0。
如果對byte、short類型移位,在移位運算前,它們會先被轉(zhuǎn)成int類型,且返回值也是int類型。
如果對long類型移位,則返回值也是long。
2、正負數(shù)換算
在java中最高位表示符號位,最高位0代表正數(shù),最高位1代表負數(shù)。
用byte數(shù)據(jù)類型舉例,byte占據(jù)8個二進制位:
01111111 正數(shù)(127)
11111111 負數(shù)(-1)
負數(shù)的換算方法
已知最高位為1,符號位不變,將其它位取反,然后+1即可得出對應(yīng)負數(shù)。
以byte類型為例:
11111111 先取反-> 10000000 再加1-> 10000001 得出結(jié)果-> -1
10001111 先取反-> 11110000 再加1-> 11110001 得出結(jié)果-> -113
10101010 先取反-> 11010101 再加1-> 11010110 得出結(jié)果-> -86
10000001 先取反-> 11111110 再加1-> 11111111 得出結(jié)果-> -127
已知十進制負數(shù),如何算出二進制原碼
符號位不變,將剩下二進制位-1,然后取反即可得出原二進制碼。
以byte類型為例:
-1 二進制-> 10000001 再減1-> 10000000 再取反得出結(jié)果-> 11111111
-113 二進制-> 11110001 再減1-> 11110000 再取反得出結(jié)果-> 10001111
-86 二進制-> 11010110 再減1-> 11010101 再取反得出結(jié)果-> 10101010
-127 二進制-> 11111111 再減1-> 11111110 再取反得出結(jié)果-> 10000001
3、位移運算演示
因為1字節(jié)的byte進行位運算時,會被自動轉(zhuǎn)成4字節(jié)的int再進行運算,我們這里直接使用int類型進行演示,方便解讀。
- 演示壹 100<<2=400

- 演示貳 15>>2=3

- 演示叁 1325400064<<2=1006632960

- 演示肆 -1895825408>>2=-473956352

- 演示伍 -1895825408<<2=1006632960

- 演示陸 -1895825408>>>2=599785472

4、拓展
~:二進制取反運算。
- 演示 ~79=-80

&:二進制與運算
- 演示 75&(-100)=8

|:二進制或運算
- 演示 75|(-100)=-33

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA配置Maven阿里云鏡像加速源的全流程
國內(nèi)網(wǎng)絡(luò)訪問 Maven 中央倉庫經(jīng)常超時、依賴下載極慢或失敗,配置阿里云等國內(nèi)鏡像后,Java 項目依賴下載飛快,極大提升開發(fā)效率,是中國開發(fā)者必做優(yōu)化,本文就給大家介紹了IntelliJ IDEA配置Maven阿里云鏡像加速源的全流程,需要的朋友可以參考下2025-09-09
Java命令行參數(shù)解析工具jcommander詳解
這篇文章主要為大家介紹了Java命令行參數(shù)解析工具jcommander命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn)
這篇文章主要介紹了基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Java并發(fā)編程中的ConcurrentLinkedQueue詳解
這篇文章主要介紹了Java并發(fā)編程中的ConcurrentLinkedQueue詳解,GetThread線程不會因為ConcurrentLinkedQueue隊列為空而等待,而是直接返回null,所以當實現(xiàn)隊列不空時,等待時,則需要用戶自己實現(xiàn)等待邏輯,需要的朋友可以參考下2023-12-12

