&运算符怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/05/26 21:15:46
#include <stdio.h>

void main ()
{
printf("0 & 0 is %d\n", 0 & 0);
printf("0 & 1 is %d\n", 0 & 1);
printf("1 & 1 is %d\n", 1 & 1);
printf("1 & 2 is %d\n", 1 & 2);
printf("15 & 127 is %d\n", 15 & 127);
}
这个的运行结果为什么是
0
0
1
0
15
我试了很多次了,,还是没弄懂是什么规律,,请知道的大哥大姐帮帮我这个菜鸟,,,小弟在这谢谢了!

&符号有三层意思:按位与 和 取地址 还有就是 引用

例1 按位与运算:1&1=1,1&0=0,0&1=0,0&0=0
15: 00001111
127: 01111111
15&127: 00001111 即15

例2 取地址:int *p=&a(取a的地址存到指针变量p中)

例3 引用:
void main()
{
void fun(int &,int &);
int i=3,j=5;
fun(i,j);
cout<<"i="<<i<<",j="<<j<<endl;
}

void fun(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}

输出:i=5,j=3

&就是按位与
比如说a = 2&1;
先把2和1化作二进制,00000010&00000001=00000000
对应位进行逻辑与运算:0&0=0 1&0=0 0&1=0 1&1=1
明白了吧

&
位与运算符

比如A&B
首先要把A和B写成二进制的数值方法。然后按位与。可以理解为乘。

举例3&5
3的二进制数是0011
5的二进制数是0101

0011(3)
(&)0101(5)
-----------
0001(1)

3&5是1

& 是按位与

就是1&1=1,1&0=0,0&1=0,0&0=0

你做的都是数字按位与 所有数字都转换为2进制之后按位与