首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 位元操作:取整數右端第 4~7 位

     編輯:Java 相關知識

位元擷取技巧

題目:取一個整數 a 從右端(最低位)開始的第 4~7 位(共 4 位)。即保留二進位的 bit 3~6(0-indexed)。

位元遮罩法(標準解)


int a = 0b101100110101; // 範例
int mask = 0b1111 << 3; // 0b1111000 = 0x78
int result = (a & mask) >> 3;

步驟:

  1. 建立遮罩:0b1111 (低 4 位全 1) 左移 3 位 → 0b1111000。
  2. a & mask 保留目標 4 位,其餘歸零。
  3. 右移 3 位將目標位移至最低位。

原始碼中的取巧寫法(十進位模擬)


public class BitExtract {
    public static void main(String[] args) {
        long b = 18745678;
        // 取十進位的第 4~7 位(非二進位位元!)
        int a = (int) Math.floor(b % Math.pow(10, 7) / Math.pow(10, 3));
        System.out.println(a); // 輸出 4567
    }
}

注意:原始碼實際是在處理十進位數字的「第 4~7 位數字」,而非二進位位元。兩者含義完全不同,實務上請確認需求。

通用工具方法


public static int getBits(int value, int fromBit, int toBit) { // 0-indexed, inclusive
    int len = toBit - fromBit + 1;
    int mask = (1 << len) - 1;
    return (value >> fromBit) & mask;
}

// 使用範例:取 bit 3~6
int result = getBits(a, 3, 6);

支援任意位元範圍擷取,建議收藏備用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved