最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java常見運算符之位運算符大全

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

1. Java 支持的位運算符

Java 提供了 7 種位運算符:

運算符名稱描述示例
&按位與(AND)兩個位都為 1 時,結(jié)果才為 15 & 3 → 1
|按位或(OR)兩個位有一個為 1 時,結(jié)果就為 15 | 3 → 7
^按位異或(XOR)兩個位不同時,結(jié)果為 15 ^ 3 → 6
~按位取反(NOT)所有位取反(0→1,1→0)~5 → -6
<<左移(Left Shift)所有位向左移動,低位補 05 << 1 → 10
>>右移(Right Shift)所有位向右移動,高位補符號位-5 >> 1 → -3
>>>無符號右移(Unsigned Right Shift)所有位向右移動,高位補 0-5 >>> 1 → 2147483645

2. 位運算詳解

(1) 按位與(&)

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

  • 示例

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

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

(2) 按位或(|)

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

  • 示例

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

    • 合并多個標志位(如 READ | WRITE | EXECUTE)。

(3) 按位異或(^)

  • 規(guī)則:兩個位不同時,結(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ù)異或為 0)。

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

  • 應(yīng)用

    • 交換兩個數(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(補碼表示)
    System.out.println(b); // 輸出:-6
  • 注意

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

(5) 左移(<<)

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

  • 示例

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

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

(6) 右移(>>)

  • 規(guī)則:所有位向右移動,高位補符號位(正數(shù)補 0,負數(shù)補 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)用

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

(7) 無符號右移(>>>)

  • 規(guī)則:所有位向右移動,高位補 0(不考慮符號位)。

  • 示例

    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)用

    • 處理無符號整數(shù)(Java 沒有無符號類型,但可以用 >>> 模擬)。

3. 位運算的常見用途

(1) 判斷奇偶

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

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

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

(3) 計算絕對值

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) 快速計算 2^n

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

4. 總結(jié)

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

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

相關(guān)文章

  • Spring Cloud下基于OAUTH2認證授權(quán)的實現(xiàn)示例

    Spring Cloud下基于OAUTH2認證授權(quán)的實現(xiàn)示例

    這篇文章主要介紹了Spring Cloud下基于OAUTH2認證授權(quán)的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java?properties?和?yml?的區(qū)別解析

    Java?properties?和?yml?的區(qū)別解析

    properties和yml都是Spring?Boot支持的兩種配置文件,它們可以看做Spring?Boot在不同時期的兩種“產(chǎn)品”,這篇文章主要介紹了Java?properties?和?yml?的區(qū)別,需要的朋友可以參考下
    2023-02-02
  • Java三目運算符用法舉例

    Java三目運算符用法舉例

    三目運算符是我們經(jīng)常在代碼中使用的,這篇文章主要給大家介紹了關(guān)于Java三目運算符用法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • IDEA配置Vue項目啟動器的過程

    IDEA配置Vue項目啟動器的過程

    文章介紹了兩種啟動方式一是通過控制臺手動輸入指令并用Ctrl+C終止;二是配置npm啟動器以簡化測試流程,提升效率
    2025-07-07
  • Spring?boot?RedisTemplate?序列化服務(wù)化配置方式

    Spring?boot?RedisTemplate?序列化服務(wù)化配置方式

    這篇文章主要介紹了Springboot?RedisTemplate序列化服務(wù)化配置方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot實現(xiàn)六邊形架構(gòu)的三種不同方式詳解

    SpringBoot實現(xiàn)六邊形架構(gòu)的三種不同方式詳解

    六邊形架構(gòu),也被稱為端口與適配器架構(gòu)或洋蔥架構(gòu),是一種將業(yè)務(wù)邏輯與外部依賴解耦的架構(gòu)模式,本文將介紹在SpringBoot中實現(xiàn)六邊形架構(gòu)的三種不同方式
    2025-06-06
  • 非常適合新手學(xué)生的Java線程池優(yōu)化升級版

    非常適合新手學(xué)生的Java線程池優(yōu)化升級版

    作者是一個來自河源的大三在校生,以下筆記都是作者自學(xué)之路的一些淺薄經(jīng)驗,如有錯誤請指正,將來會不斷的完善筆記,幫助更多的Java愛好者入門
    2022-03-03
  • springboot打包jar和war包的教程圖解

    springboot打包jar和war包的教程圖解

    這篇文章主要介紹了springboot打包jar和war包的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • java property配置文件管理工具框架過程詳解

    java property配置文件管理工具框架過程詳解

    這篇文章主要介紹了java property配置文件管理工具框架過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java異常處理執(zhí)行順序詳解try catch finally

    java異常處理執(zhí)行順序詳解try catch finally

    try catch語句是java語言用于捕獲異常并進行處理的標準方式,對于try catch及try catch finally執(zhí)行順序必須有深入的了解
    2021-10-10

最新評論

稻城县| 神农架林区| 长子县| 通山县| 仁寿县| 阜宁县| 肇州县| 嘉义市| 余庆县| 灌南县| 通海县| 南陵县| 丽江市| 长垣县| 静海县| 孙吴县| 米易县| 昂仁县| 肇东市| 上高县| 平顶山市| 平罗县| 原阳县| 诸城市| 蓬溪县| 息烽县| 青川县| 信宜市| 田东县| 霍山县| 四子王旗| 梨树县| 镇坪县| 二手房| 吉林市| 贵阳市| 安达市| 邛崃市| 漳浦县| 巴楚县| 安丘市|