You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将整数转为boolean数组表示二进制?含固定长度需求

Java 整数转boolean数组的简便实现

针对你需求的两种场景,这里提供基于位运算的高效实现(比%运算更快,避免超时):

1. 无固定长度(仅保留有效二进制位)

输入整数的二进制有效位数决定数组长度,比如input=12(二进制1100)返回[true, true, false, false]。

public static boolean[] intToBooleanArray(int input) {
    // 处理0的特殊情况
    if (input == 0) {
        return new boolean[]{false};
    }
    // 计算二进制有效位数:32位int减去前导零的个数
    int bitLength = Integer.SIZE - Integer.numberOfLeadingZeros(input);
    boolean[] result = new boolean[bitLength];
    // 从最高位掩码开始遍历
    int mask = 1 << (bitLength - 1);
    
    for (int i = 0; i < bitLength; i++) {
        // 当前位为1则设为true,否则false
        result[i] = (input & mask) != 0;
        // 掩码无符号右移一位,处理下一位
        mask >>>= 1;
    }
    return result;
}

2. 固定长度数组(不足补0)

指定数组长度,二进制位不足时高位补0,比如input=15(二进制1111)、固定长度6,返回[false, false, true, true, true, true]。

public static boolean[] intToFixedLengthBooleanArray(int input, int fixedLength) {
    if (fixedLength <= 0) {
        throw new IllegalArgumentException("固定长度必须大于0");
    }
    boolean[] result = new boolean[fixedLength];
    // 固定长度的最高位掩码
    int mask = 1 << (fixedLength - 1);
    
    for (int i = 0; i < fixedLength; i++) {
        result[i] = (input & mask) != 0;
        mask >>>= 1;
    }
    return result;
}

为什么用位运算?

位运算直接操作二进制底层数据,比%取模+除法的组合效率高得多——后者不仅需要计算,还得额外反转数组才能得到高位在前的顺序,很容易在数据量较大时超时。这里的实现直接按高位到低位的顺序填充数组,一步到位。

内容的提问来源于stack exchange,提问作者I_Hate_ReLU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:01:11