按位运算符和循环

时间:2015-09-15 07:35:28

标签: java bitwise-operators

我试图理解按位和移位运算符。我写了一个简单的代码来向我展示一个短类型的位。

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位。 我不明白为什么第二个的输出是32位。 谢谢。

1 个答案:

答案 0 :(得分:5)

您使用long t = 2147483648L启动循环,即2 ^ 31。因此,你的循环有32次迭代并打印32位。

如果您希望显示更多位,请使用long t = 0x4000000000000000L;(相当于以01开头并以62 0结尾的二进制数)开始循环。