亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java常見(jiàn)運(yùn)算符之位運(yùn)算符大全

 更新時(shí)間:2025年04月28日 09:26:37   作者:?jiǎn)釃D對(duì)你問(wèn)好  
這篇文章主要介紹了Java常見(jiàn)運(yùn)算符之位運(yùn)算符的相關(guān)資料,包括按位與、按位或、按位異或、按位取反、左移、右移和無(wú)符號(hào)右移,這些運(yùn)算符在判斷奇偶、交換變量、計(jì)算絕對(duì)值、判斷是否為2的冪以及快速計(jì)算2的冪次方等方面有廣泛應(yīng)用,需要的朋友可以參考下

1. Java 支持的位運(yùn)算符

Java 提供了 7 種位運(yùn)算符:

運(yùn)算符名稱(chēng)描述示例
&按位與(AND)兩個(gè)位都為 1 時(shí),結(jié)果才為 15 & 3 → 1
|按位或(OR)兩個(gè)位有一個(gè)為 1 時(shí),結(jié)果就為 15 | 3 → 7
^按位異或(XOR)兩個(gè)位不同時(shí),結(jié)果為 15 ^ 3 → 6
~按位取反(NOT)所有位取反(0→1,1→0)~5 → -6
<<左移(Left Shift)所有位向左移動(dòng),低位補(bǔ) 05 << 1 → 10
>>右移(Right Shift)所有位向右移動(dòng),高位補(bǔ)符號(hào)位-5 >> 1 → -3
>>>無(wú)符號(hào)右移(Unsigned Right Shift)所有位向右移動(dòng),高位補(bǔ) 0-5 >>> 1 → 2147483645

2. 位運(yùn)算詳解

(1) 按位與(&)

  • 規(guī)則:兩個(gè)位都為 1 時(shí),結(jié)果才為 1,否則為 0。

  • 示例

    int a = 5;    // 二進(jìn)制:0101
    int b = 3;    // 二進(jìn)制:0011
    int c = a & b; // 二進(jìn)制:0001 → 1
    System.out.println(c); // 輸出:1
  • 應(yīng)用

    • 判斷奇偶:(n & 1) == 0 → 偶數(shù)。

(2) 按位或(|)

  • 規(guī)則:兩個(gè)位有一個(gè)為 1 時(shí),結(jié)果就為 1。

  • 示例

    int a = 5;    // 0101
    int b = 3;    // 0011
    int c = a | b; // 0111 → 7
    System.out.println(c); // 輸出:7
  • 應(yīng)用

    • 合并多個(gè)標(biāo)志位(如 READ | WRITE | EXECUTE)。

(3) 按位異或(^)

  • 規(guī)則:兩個(gè)位不同時(shí),結(jié)果為 1,否則為 0。

  • 示例

    int a = 5;    // 0101
    int b = 3;    // 0011
    int c = a ^ b; // 0110 → 6
    System.out.println(c); // 輸出:6
  • 特性

    • a ^ a = 0(相同數(shù)異或?yàn)?0)。

    • a ^ 0 = a(任何數(shù)與 0 異或不變)。

  • 應(yīng)用

    • 交換兩個(gè)數(shù)(不使用臨時(shí)變量):

      int x = 5, y = 3;
      x = x ^ y;
      y = x ^ y; // y = (x ^ y) ^ y = x
      x = x ^ y; // x = (x ^ y) ^ x = y
      System.out.println(x + ", " + y); // 輸出:3, 5

(4) 按位取反(~)

  • 規(guī)則:所有位取反(0→1,1→0)。

  • 示例

    int a = 5;    // 0000 0101
    int b = ~a;   // 1111 1010(補(bǔ)碼表示)
    System.out.println(b); // 輸出:-6
  • 注意

    • Java 使用補(bǔ)碼表示負(fù)數(shù),~5 實(shí)際上是 -6。

(5) 左移(<<)

  • 規(guī)則:所有位向左移動(dòng),低位補(bǔ) 0。

  • 示例

    int a = 5;    // 0000 0101
    int b = a << 1; // 0000 1010 → 10
    System.out.println(b); // 輸出:10
  • 應(yīng)用

    • 快速計(jì)算 a * 2^n(如 a << 3 = a * 8)。

(6) 右移(>>)

  • 規(guī)則:所有位向右移動(dòng),高位補(bǔ)符號(hào)位(正數(shù)補(bǔ) 0,負(fù)數(shù)補(bǔ) 1)。

  • 示例

    int a = 5;    // 0000 0101
    int b = a >> 1; // 0000 0010 → 2
    int c = -5 >> 1; // 1111 1101 → -3
    System.out.println(b + ", " + c); // 輸出:2, -3
  • 應(yīng)用

    • 快速計(jì)算 a / 2^n(如 a >> 2 = a / 4)。

(7) 無(wú)符號(hào)右移(>>>)

  • 規(guī)則:所有位向右移動(dòng),高位補(bǔ) 0(不考慮符號(hào)位)。

  • 示例

    int a = -5;    // 1111 1111 1111 1111 1111 1111 1111 1011
    int b = a >>> 1; // 0111 1111 1111 1111 1111 1111 1111 1101 → 2147483645
    System.out.println(b); // 輸出:2147483645
  • 應(yīng)用

    • 處理無(wú)符號(hào)整數(shù)(Java 沒(méi)有無(wú)符號(hào)類(lèi)型,但可以用 >>> 模擬)。

3. 位運(yùn)算的常見(jiàn)用途

(1) 判斷奇偶

if ((n & 1) == 0) {
    System.out.println("偶數(shù)");
} else {
    System.out.println("奇數(shù)");
}

(2) 交換兩個(gè)數(shù)

int x = 5, y = 3;
x = x ^ y;
y = x ^ y;
x = x ^ y;
System.out.println(x + ", " + y); // 輸出:3, 5

(3) 計(jì)算絕對(duì)值

int a = -5;
int abs = (a ^ (a >> 31)) - (a >> 31);
System.out.println(abs); // 輸出:5

(4) 判斷是否為 2 的冪

boolean isPowerOfTwo = (n & (n - 1)) == 0;
System.out.println(isPowerOfTwo); // 8 → true, 7 → false

(5) 快速計(jì)算 2^n

int power = 1 << n; // 2^n
System.out.println(power); // n=3 → 8

4. 總結(jié)

運(yùn)算符用途示例
&判斷奇偶、權(quán)限控制(n & 1) == 0
|合并標(biāo)志位READ | WRITE
^交換變量、加密a ^= b; b ^= a; a ^= b;
~取反~5 → -6
<<快速乘以 2^n5 << 2 → 20
>>快速除以 2^n-5 >> 1 → -3
>>>無(wú)符號(hào)右移-5 >>> 1 → 2147483645

到此這篇關(guān)于Java常見(jiàn)運(yùn)算符之位運(yùn)算符的文章就介紹到這了,更多相關(guān)Java位運(yùn)算符大全內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)

    java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)

    下面小編就為大家?guī)?lái)一篇java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • java面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則示例詳解

    java面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則示例詳解

    這篇文章主要為大家介紹了java面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則的示例詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • jdbcTemplate使用方法實(shí)例解析

    jdbcTemplate使用方法實(shí)例解析

    這篇文章主要介紹了jdbcTemplate使用方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 根據(jù)ID填充文本框的實(shí)例代碼

    根據(jù)ID填充文本框的實(shí)例代碼

    這篇文章介紹了根據(jù)ID填充文本框的小例子,有需要的朋友可以參考一下
    2013-07-07
  • SpringBoot獲取maven打包時(shí)間的兩種方式

    SpringBoot獲取maven打包時(shí)間的兩種方式

    這篇文章主要介紹了SpringBoot獲取maven打包時(shí)間的兩種方式,文章通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • java抽象類(lèi)和接口定義與用法詳解

    java抽象類(lèi)和接口定義與用法詳解

    這篇文章主要介紹了java抽象類(lèi)和接口定義與用法,結(jié)合實(shí)例形式詳細(xì)分析了java抽象類(lèi)和接口的基本概念、原理、定義、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Java集合之Set、HashSet、LinkedHashSet和TreeSet深度解析

    Java集合之Set、HashSet、LinkedHashSet和TreeSet深度解析

    這篇文章主要介紹了Java集合之Set、HashSet、LinkedHashSet和TreeSet深度解析,List是有序集合的根接口,Set是無(wú)序集合的根接口,無(wú)序也就意味著元素不重復(fù),更嚴(yán)格地說(shuō),Set集合不包含一對(duì)元素e1和e2 ,使得e1.equals(e2) ,并且最多一個(gè)空元素,需要的朋友可以參考下
    2023-09-09
  • SpringBoot將項(xiàng)目打成war包步驟解析

    SpringBoot將項(xiàng)目打成war包步驟解析

    這篇文章主要介紹了SpringBoot將項(xiàng)目打成war包步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Android?Studio中創(chuàng)建java工程的完整步驟

    Android?Studio中創(chuàng)建java工程的完整步驟

    Android?Studio創(chuàng)建java工程是非常麻煩的,因?yàn)锳ndroid?Studio沒(méi)有提供直接創(chuàng)建java工程的方法,下面這篇文章主要給大家介紹了關(guān)于Android?Studio中創(chuàng)建java工程的完整步驟,需要的朋友可以參考下
    2024-01-01
  • java對(duì)象與json對(duì)象間的相互轉(zhuǎn)換的方法

    java對(duì)象與json對(duì)象間的相互轉(zhuǎn)換的方法

    本篇文章主要介紹了java對(duì)象與json對(duì)象間的相互轉(zhuǎn)換的方法,詳細(xì)介紹了json字符串和java對(duì)象相互轉(zhuǎn)換,有興趣的可以了解一下
    2017-01-01

最新評(píng)論