我如何对两个数字进行按位和?

时间:2013-02-27 12:56:41

标签: c function bit-manipulation

例如,假设我想在124和100之间按位计算AND函数,我该怎么做呢?请简要解释一下。谢谢。

4 个答案:

答案 0 :(得分:9)

int number = 124 & 100


说明:

将124转换为按位格式,假设为32位整数。 =

0000 0000 0000 0000 0000 0000 0111 1100

将100转换为按位格式,假设为32位整数。 =

0000 0000 0000 0000 0000 0000 0110 0100

ANDING按位:

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

答案 1 :(得分:1)

使用C &中的按位和运算符,例如124 & 100

答案 2 :(得分:0)

只需使用&运算符:

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

答案 3 :(得分:0)

只需使用result = a & b ...