繁体   English   中英

按位运算符和for循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM