我对两个整数执行操作......考虑我做
A = (1 << 6) 或 (1 << 7)
有没有一种方法可以在执行 OR 操作后从 A 中获取整数 6 和 7?
请让我知道答案是否已在其他任何地方得到回答。
我对两个整数执行操作......考虑我做
A = (1 << 6) 或 (1 << 7)
有没有一种方法可以在执行 OR 操作后从 A 中获取整数 6 和 7?
请让我知道答案是否已在其他任何地方得到回答。
除了您的表达式不是有效的 Java 并且不知道您想做什么之外,假设您希望确定哪些位是“设置”的,您可以使用 来执行此操作Integer.numberOfTrailingZeros()
,例如:
Integer.numberOfTrailingZeros( A & 64 ); // 1<<6 == 64
Integer.numberOfTrailingZeros( A & 128 ); // 1<<7 == 128
这将分别为您提供整数 6 和 7。
干杯,
您可以通过测试来获取各个位:
bit6 = (A >> 6) & 1;
bit7 = (A >> 7) & 1;
如果 bit6 == 1,则整数 6 在位集中。
int value=(1<<7) | (1<<6);
StringBuilder sb=new StringBuilder();
if(value==0) sb.append("0");
else while(value!=0) {
int b=Integer.highestOneBit(value);
if(b==1) sb.append("1");
else
sb.append("(1<<").append(Integer.numberOfTrailingZeros(b)).append(')');
value-=b;
if(value>0) sb.append(" | ");
}
System.out.println(sb);
如果您总是位移 1,那么您可以执行以下操作。
int a = (1 << 6) ^ (1 << 7);
int temp = a;
for(int i=0;i<32;i++) {
if((temp&1)==1)
System.out.println("number: " + i);
temp = temp >> 1;
}
输出:
number: 6
number: 7