[英]How do I do bitwise AND of two numbers?
例如,假設我想在 124 和 100 之間按位計算 AND function,我應該怎么做呢? 請簡要說明。 謝謝你。
int number = 124 & 100
說明:
假定為32位整數,則將124轉換為按位格式。 =
0000 0000 0000 0000 0000 0000 0111 1100
假定為32位整數,則將100轉換為按位格式。 =
0000 0000 0000 0000 0000 0000 0110 0100
按位與:
0000 0000 0000 0000 0000 0000 0111 1100
0000 0000 0000 0000 0000 0000 0110 0100
----------------------------------------
0000 0000 0000 0000 0000 0000 0110 0100
---------------------------------------
十進制為100
! 這將被包含在number
在上面的代碼!
AND門真值表為:
+-------+---------+
| A | B | A AND B |
+-------+---------+
|0 | 0 | 0 |
|0 | 1 | 0 |
|1 | 0 | 0 |
|1 | 1 | 1 |
+-------+---------+
#include <stdio.h>
#define IS_SET(a,b) ((((a & (1 << b)) >> b) > 0?1:0))
#define SET(a,b) ((a |= (1 << b)))
#define CLEAR(a,b) ((a &= ~(1 << b)))
int AND(int a, int b)
{
int i;
int c = 0;
for(i = 0; i < sizeof(int); i++){
if(IS_SET(a,i) && IS_SET(b,i)){
SET(c,i);
}else{
CLEAR(c,i);
}
}
return c;
}
int main(int argc,char *Argv[])
{
int a = 10;
int b = 30;
//Basic UNIT test!
if((a & b) == AND(a,b)){
printf("Test pass!");
}else{
printf("Test fail!");
}
}
在C &
124 & 100
使用按位和運算符
只需使用&
運算符:
int a = 124, b = 100;
int c = a & b;
只需使用result = a & b
...
假設你有兩個十進制形式的數字 A 和 B,比如 A = 12 & B = 15,將這些數字寫成二進制形式,比如 A = 1100 & B = 1111,這樣我們就可以通過比較兩個數字相同的 position 那么如果兩個位都是 1 那么它是 1 否則它是 0。
例如,在給定的示例中,前 2 位被設置為 11,因此答案為 1100。
在編寫代碼時,'&' 運算符只是為我們完成工作。 例如
int res = A&B; cout<<res<<endl;
output:1100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.