java - 移位后的位值

标签 java bit-shift bit

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/

相关文章:

java - Oracle JDK 7 未安装且 E : Sub-process/usr/bin/dpkg returned an error code (1)

java - 如何使用字符串值来调用类属性

c - 带有警告的饱和算术问题

c - 位移 x * 数字

c - 我需要对这个按位拼图做一点解释

java - 生成大量字母以供将来操作的最佳方法

c++ - IBM 单精度 float 据转换为预期值

java - 使用 Android Dropbox API 检查文件是否存在于 Dropbox 上

java - 如何让 Maven 从 Apache Tuscany 查找 org.osoa.sca.annotations.Remotable?

c - 为什么 ~0 >> 1 不移动位?