2014-12-04 56 views
-4

我正在学习位操作和我正在考虑一个问题,想澄清位操作澄清用C

如果给像0000111111111111;

,我想2个功能:

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

  1. 如果我想要让这个我去掉一个零,从左侧

    • 我在想,由1右移会达到我想要纠正开始?
  2. 如果我想要一个零添加到左侧,使其成为0001111111111111

    • 我如何去实现呢?
+0

左右排序和指数从1开始让我头疼。 – 2014-12-04 20:20:02

回答

0

如果我想要让这个我去掉一个零,从左侧 我在想,由1右移将实现我 想要什么正确的起动?

答案:No。如果您right-shift,你被转移所有位由one换号向右least significant bit(一种最右侧)脱落的末尾:

0000011111111111; 

如果我想补充一个零左,所以它变成0001111111111111 我该如何去实现这个?

答:left-shift,并添加1

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