C中的位操作澄清

时间:2014-12-04 20:06:44

标签: c bit

我正在学习位操作,我正在考虑一个问题,并希望得到一些澄清

如果给出类似0000111111111111;

的内容

我想要2个功能:

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

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

    • 我是否正确地认为1换一次会达到我想要的目的?
  2. 如果我想在左边添加一个零,那么它就变成0001111111111111

    • 我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

  

如果我想这样做,我从左边开始删除一个零   我是否正确地认为1的正确转变会实现我的目标   要什么?

答案: No。如果您right-shift,则通过将所有位移至one 右侧来更改数字,而least significant bit(最右侧的位置)会下降结束:

0000011111111111;
  

如果我想在左边添加一个零,那么它就变成了0001111111111111   我该如何实现这个目标?

回答:left-shift并添加1

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