Eur*_*oco 0 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();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
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
Run Code Online (Sandbox Code Playgroud)
我使用第二个用于AND的短(16位)和长(64位),输出是32位.我不明白为什么第二个的输出是32位.谢谢.
你开始循环long t = 2147483648L,这是2 ^ 31.因此,您的循环有32次迭代并打印32位.
如果要显示更多位,请启动循环long t = 0x4000000000000000L;(相当于以01开头并以62 0结尾的二进制数).
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |