Java中如何创建仅存0和1的8bit数组并将0-255整数转二进制存入
Java实现方案
核心思路
0~255的整数刚好对应无符号8位二进制的取值范围,我们直接通过位运算逐位提取每一位的0/1值存入固定长度为8的数组即可,无需转换为字符串再拆分,执行效率更高。
完整实现代码
import java.util.Random; public class BitArrayDemo { public static void main(String[] args) { // 1. 创建长度为8的int数组,仅存储0和1,对应8bit int[] bitArray = new int[8]; // 2. 生成0~255之间的随机整数 Random random = new Random(); int randomNum = random.nextInt(256); // nextInt(256)返回[0,256)的整数,刚好覆盖0~255 System.out.println("生成的随机整数:" + randomNum); // 3. 逐位提取bit值存入数组,此处按高位在前的顺序存储(可根据需求调整顺序) for (int i = 0; i < 8; i++) { // 从最高位(第7位,对应2^7=128)开始逐位取值 bitArray[i] = (randomNum >> (7 - i)) & 1; } // 打印结果验证 System.out.print("对应的8bit数组(高位在前):"); for (int bit : bitArray) { System.out.print(bit + " "); } } }
代码说明
- 数组定义:长度固定为8的int数组,通过位运算保证存入的元素只能是0或1,完全满足仅存储0和1的8bit数组要求
- 位运算逻辑:
(randomNum >> offset) & 1是标准的位提取操作,先将目标位移到最低位,再和1做与运算,结果只能是0或1 - 存储顺序:示例中为高位在前存储,如果你需要低位在前,只需要把循环中的偏移量改为
i即可,即bitArray[i] = (randomNum >> i) & 1;
内容的提问来源于stack exchange,提问作者user17550172
相关产品推荐
相关产品推荐

