移位二进制字符串时丢失LSB

时间:2017-12-11 19:47:21

标签: string char shift

嗨我目前有一个二进制字符串,我向左移动一次。

char bin[] = "01010001";

  printf("Binary number = %s \n", bin);
  printf("Binary number shifted by 1 to the left = %s \n", (bin+1) );

输出:

    Binary number = 01010001
    Binary number shifted by 1 to the left = 1010001

移位的版本应该是:10100010而不是1010001.有谁知道为什么我总是丢失最不重要的位?

1 个答案:

答案 0 :(得分:0)

我猜您的代码是用C语言编写的?

然后你不在这里对位执行移位操作。

而是声明一个char数组(指针)并将其指针位置递增一(通过bin+1)。 结果就是你所看到的。最左边的角色正在切断。

对于实际移位操作,使用数值变量,移位运算符(<<>>)并以二进制表示形式打印变量(找到一种方式,例如here)。