我执行两个整数的操作...考虑我做
A =(1 <&lt; 6)OR(1 <7)
有没有办法在执行OR运算后从A获得整数6和7?
如果答案已在其他地方得到解答,请告诉我。
答案 0 :(得分:1)
除了你的表达式不是有效的Java并且不知道你想做什么这一事实,但假设你想确定哪些位是“设置”,你可以用Integer.numberOfTrailingZeros()
执行此操作,例如:
Integer.numberOfTrailingZeros( A & 64 ); // 1<<6 == 64
Integer.numberOfTrailingZeros( A & 128 ); // 1<<7 == 128
这将分别获得第6和第7个。
干杯,
答案 1 :(得分:0)
您可以通过测试来获取各个位:
bit6 = (A >> 6) & 1;
bit7 = (A >> 7) & 1;
如果bit6 == 1,则整数6位于bitset中。
答案 2 :(得分:0)
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);
答案 3 :(得分:0)
如果你总是位移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