簡單聊聊 JAVA位運算符

哈嘍,本來打算講一講HashMap的原理的,但是發(fā)現(xiàn)在HashMap中用到了一些位運算符,所以打算先來講講Java的位運算符,這樣在講HashMap的時候更容易理解。

Java位運算符分為 &|,^,~>>,<<,位運算符是對2進制進行位運算,在2進制中1表示true,0表示false。

下面我們依次來講解下:

&(與運算符)

與運算符表示的是都為true的時候才是true,否則為false。
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
栗子:
3 & 6
我們先得到3和6的2進制,分別為
00000011
00000110
在與運算過后得到的是
00000010
所以最后結(jié)果轉(zhuǎn)換為10進制為2。

|(或運算符)

或運算符表示的是如果有一個為true,那么就為true,否則為false。
1 & 0 = 1
1 & 1 = 1
0 & 0 = 0
栗子:
5 | 7
我們先得到5和7的二進制,分別為
00000101
00000111
在或運算過后為
00000111
所以最后轉(zhuǎn)換為10進制為7。

^(異或運算符)

異或運算符表示的是如果相同,則為false,否則為true。
1 & 0 = 1
1 & 1 = 0
0 & 0 = 0
栗子:
4 ^ 9
我們先得到4和9的二進制,分別為
00000100
00001001
在異或運算過后為
00001101
轉(zhuǎn)換為10進制為13。

~(取反運算符)

取反表示為true為false,false為true。
~ 1 = 0
~ 0 = 1

在講栗子之前先說一下2進制的最高位是用來表示正負(fù)的,如果最高位為0,則為正數(shù),如果為1,則為負(fù)數(shù)。比如-6,轉(zhuǎn)換為2進制就是6的2進制取反然后+1。
6的2進制為(因為Int是32位,所以我們用32位表示更加清楚)
00000000 00000000 00000000 00000110
那么取反過后為
11111111 11111111 11111111 11111001
因為是-6,所以我們在6取反過后還要+1,那么-6的2進制為
11111111 11111111 11111111 11111010

在講完正負(fù)如何轉(zhuǎn)換2進制過后我們來舉一個取反的栗子
~6
我們先拿到6的2進制為
00000000 00000000 00000000 00000110
取反過后為
11111111 11111111 11111111 11111001
然后轉(zhuǎn)換為10進制,因為最高位為1,所以為負(fù)數(shù),負(fù)數(shù)轉(zhuǎn)換為10進制我們要先-1,再取反,最后得到的數(shù)前面加一個負(fù)號就好。
所以我們最后得到的是 -7。

>>(右移運算符)

右移就是將2進制向右移動。
栗子:
5 >> 2
就是將5的2進制向右移動2位。
5的2進制為
00000101
右移過后為
00000001
那么最后結(jié)果轉(zhuǎn)為10進制為1。
這里需要注意的是在移動過后必然需要補位,補位的時候如果左邊為0,那么久補0,如果為1,那么就補1。

<<(左移運算符)

左移運算符和右移運算符原理一樣,只不過是向左移動。這里我們還是用5來舉栗子。
5 << 2
5的2進制為
00000101
左移兩位過后為
00010100
轉(zhuǎn)換為10進制為20


上文中如果有錯誤歡迎大家指出。

3Q

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本章將會介紹 模塊和源文件訪問級別訪問控制語法自定義類型子類常量、變量、屬性、下標(biāo)構(gòu)造器協(xié)議擴展泛型類型別名位運算...
    寒橋閱讀 994評論 0 2
  • 最近工作中被運算效率問題所困擾,比如大數(shù)據(jù)排序或者去重,因此現(xiàn)在需要補習(xí)一下位移運算。 首先講一下位移概念? 左位...
    等一夏_81f7閱讀 1,365評論 0 0
  • Java二進制與運算符知識 經(jīng)??吹揭恍㎎ava源碼和一些開源算法中常用到|、&、||、&&、>>、<<、>>>這...
    AnonyPer閱讀 1,292評論 0 0
  • 主要涉及 按位運算符(&、|、~、^) 移位操作符(<<、 >> 、>>> ) 廢話 為什么說是就算學(xué)了也不會用的...
    睡不醒的猿閱讀 913評論 0 1
  • 四年多以前,他懷孕的妻子看到他在QQ空間寫的這段話,用他的QQ和我對話,質(zhì)問我為什么他為我找工作,在QQ空間為我寫...
    婷子的媽閱讀 130評論 0 0

友情鏈接更多精彩內(nèi)容