[英]Bitwise operators and for loop
我试图理解按位运算符和移位运算符。 我编写了一个简单的代码来向我展示短类型的位。
class Shift {
public static void main (String args[]) {
short b = 16384;
for (int t = 32768; t > 0; t = t / 2) {
if ((b&t) != 0) System.out.print("1 ");
else System.out.print ("0 ");
}
System.out.println();
b = (short)(b + 2);
for (long t = 2147483648L; t > 0; t = t / 2) {
if ((b&t) != 0) System.out.print ("1 ");
else System.out.print ("0 ");
}
System.out.println();
}
}
输出为:
C:\>java Shift
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0
我将第二个用于一个AND(短(16位)和长(64位)),输出为32位。 我不明白为什么第二个for的输出是32位。 谢谢。
您从long t = 2147483648L
开始循环,这是2 ^ 31。 因此,您的循环具有32次迭代并输出32位。
如果希望显示更多位,则从long t = 0x4000000000000000L;
开始循环long t = 0x4000000000000000L;
(等效于以01开头并以62 0结束的二进制数)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.