2013-02-27 38 views
1

舉個例子,假設我想計算124和100之間的AND函數,我該怎麼做?請簡單解釋一下。謝謝。我該如何處理兩個數字的按位與?

+0

谷歌它問;) – yuan 2013-02-27 14:00:50

+2

@張元:SO存在是有原因的。您可以建議使用位於右上角的搜索欄,或者甚至更好 - 建議重複的問題。 「谷歌它」不是一個正確的答案。 – 2013-02-27 14:30:19

回答

0

只需使用&操作符:

int a = 124, b = 100; 
int c = a & b; 
8
int number = 124 & 100


說明:

轉換124以逐位格式,假定一個32位整數。 =

0000 0000 0000 0000 0000 0000 0111 1100

轉換100到按位格式,假定一個32位整數。 =

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的上述代碼中!

與門真值表:

+-------+---------+ 
| 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!"); 
    } 
} 
0

之前只使用result = a & b ...

1

使用按位與操作者用C &124 & 100

相關問題