我正在学习位操作,我正在考虑一个问题,想要澄清一下

如果给出类似0000111111111111;的信息

我想要2个功能:

假设我从右到左读取索引,索引从1开始,即索引1-12 = 1,索引13,14,15,16 = 0


如果我想这样做,以便我从左边开始删除一个零


我是否正确认为以1向右移动即可实现我想要的?

如果我想在左边加一个零,那么它变成0001111111111111


我该如何实现这一目标?

最佳答案

如果我想这样做,以便我从左边开始删除一个零
  我是否正确认为以右移1可以实现我的目标
  想?


答案:No。如果您使用right-shift,则通过将所有位向右移动one来更改数字,并且least significant bit(最右边的一位)从结尾掉下来:

0000011111111111;



  如果我想在左侧添加一个零,则它变为0001111111111111
  我该如何实现这一目标?


答案:您left-shift并添加1

0000111111111111;   original
0001111111111110;   left-shift
0001111111111111;   +1

关于c - C语言中的位操作说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27303049/

10-12 21:34