Java位操作

 無論說是在哪一門計算機語言,位操作運算對于計算機來說肯定是最高效的,因為計算機的底層是按就是二進制,而位操作就是為了節省開銷,加快程序的執行速度,以及真正的實現對數的二進制操作。
 使用位操作,很多代碼看起來會很簡潔,并且執行速度也會隨之提高。在大多數編程語言中都會有 << 和 >>

這兩個符號向左的就是左移,反之則是右移這個符號的左邊就是需要操作的數,而右邊就代表了對這個數移動多少位。

1.具體位操作

  1. 左移( << ):
    左移幾位就是將這個數再乘以2的幾次方,例如說 4 << 2 其結果就是16,也就是將這個數化作為2進制的數然后向左移動兩位,最右邊的空位就補0.
  2. 右移( >> ):
    右移就剛好相反,但是也不是完全一樣,他是向右移動 n 位,如果說這個數本來就是正的,那么和左移剛好相反就直接除以 2 的 n 次方位,但是如果是負數的話在這個數向右移動 n 位后我們在前面的空位補的是 0 。也就是右移的話是與數相關的問題。右移一個很明顯的應用就是在二分法的時候我們就可以直接右移一位,顯然速度會提高。
  3. 超級右移( >>> ):
    剛剛說了右移其實還是需要按照情況來的,有時候就不一定是正數,我們就可能補 1 ,但是我們期望結果就是這個數除以 2 的 n 次方,我們就可以使用這個無視正負號的右移操作 >>> ,也就是說他是在任何情況下都是給最高位添加 0 。
  4. 與操作( & ):
    與操作就是把兩個數轉化為二進制的數,然后再把這兩個數,從最低位每位對其,同 1 結果為 1 否則全為 0。
  5. 或操作( | ):
    操作同上只是這個是同 0 為 0,其他都是1。
  6. 取反操作( ~ ):
    二進制的0 變 1 , 1 變 0。
  7. 異或( ^ ):
    異或有一條很重要的性質,用的非常多就是一個數異或同一個數兩次結果還是那個數。

上面的與或操作會發現他們有單符號的還有雙符號的,不要搞混了單符號的不僅僅就是位操作,他們還是邏輯操作,而雙符號的僅僅就是邏輯操作。并且他們有區別例如 & 和 && 當他們都作為邏輯操作的,前者就是對一個表達式一直判斷完畢才會出現他的值,而后者則是判斷一半如果知道為假或真他就不再判斷了,這也就是我們看到的大多數的 if 判斷中是用的雙與,而非單與。

2.實際應用:

  1. 第一個就是兩個數交換,這個一般有三種方式:
    第一個:臨時變量
int i=3,j=8,temp=0;
temp=i;
i=j;
j=temp;

第二個:使用加減法

int i=3,j=8;
i=j+i;
j=i-j;
i=i-j;

第三個:位操作

int i=3,j=8;
i=i^j;
j=i^j;
i=i^j;

這個地方就是用了異或的重要性質

  1. 第二個就是進制轉換了:
    基本思路就是先把數轉為二進制的數,然后如果要 16 進制那么就4位取,8進制3位取,但是又怎么取這個4位或者3位呢,這里與操作就能派上用場取四位我們可以直接與上 15 ,三位就是 7 了,例如:
int num=60;
int n1=num & 15;
int tmp=num >>> 4;
int n2=tmp & 15;
System.out.println("n1: "+n1+" n2 "+n2);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容