程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> #define lowbit(x) ((x)&(-x))原理詳解,

#define lowbit(x) ((x)&(-x))原理詳解,

編輯:C++入門知識

#define lowbit(x) ((x)&(-x))原理詳解,


#define lowbit(x) ((x)&(-x)) 

也可以寫成如下形式:

int Lowbit(x) {

  return x&(-x);

}

例如:

1> x = 1:

十進制轉二進制(設位數為8):

1 => 0000 0001

-1=> 1111 1111(此處為1的補碼)

1&(-1)的二進制位運算為(同1異0):

2> x = 6:

十進制轉二進制(設位數為8):

6 => 0000 0110

-6=> 1111 1010(此處為6的補碼)

6&(-6)的二進制位運算為(同1異0):

所以6&(-6)=2

總結:

求出2^p(其中p: x 的二進制表示數中, 右向左數第一個1的位置),

如6的二進制表示為110,向左數第零個為0,第一個為1,則p=1,

故Lowbit(6) = 2^1 = 2。

或直接理解為:二進制按位與運算,返回不大於x的2的最大次方因子

                                                                                                        開始於:2016-03-18、16:37:32

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved