簡體   English   中英

我如何對兩個數字進行按位與操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM