我正在学习位操作,我正在考虑一个问题,想要澄清一下
如果给出类似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/