2014-12-04 120 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