String message = "1";
byte[] bytes = message.getBytes();
System.out.println(bytes[0] + ": ");
for (int i = 0; i < 8; i++) {
System.out.print((bytes[0] >> (7 - i)) + " ");
}
Output: 49:
0 0 1 3 6 12 24 49
所以我的字符串是 1
,在 ASCII 中是 49
。我想要理解的是为什么我的位的值为 3、6、12、24 和 49?后面发生了什么,为什么不像前3那样只有0和1?
最佳答案
二进制的49是
110001
将这个相同的值移动 7, 6, 5, 4, ..., (7 - i)
位。
所以
00110001 >> 7 ==> 00000000 == 0
00110001 >> 6 ==> 00000000 == 0
00110001 >> 5 ==> 00000001 == 1
00110001 >> 4 ==> 00000011 == 3
...
您可以使用Integer.toBinaryString(int)
获取整数值的二进制表示形式为String
。
关于java - 移位后的位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386254/