关于C语言位运算的有关问题,本人新手

关于C语言位运算的问题,本人新手
以下是代码
#include <stdio.h>
#include <conio.h>
main()
{int a,b=255,c;
printf("input data a:");
scanf("%d",&a);
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
getch();}
 
以上代码教程里说是用来为数据的高8位清零用的,现输入A值的为365,此时A的二进制代码是00000001 01101101 ,B的二进制代码为00000000 11111111,数据在内存中都是以二进制的形式存储的,如果数据A的高8位都清零的话,那输出的时候A的值不应该再是那个365,可实际并非如此,我不知道我哪里理解出了问题,郁闷了很久,特来此向诸位高手请教,到底位运算是怎么一回事呢?

------解决方案--------------------
c=a&b;


高八位清零的结果存入 c 中了
------解决方案--------------------
探讨

其实我是这么想的,教程里说把A的高八位清零了,A原先的二进制值为00000001 01101101,如果它的高八位清零的话,A的二进制值就变成了00000000 01101101,不知道我这样理解是否有误,如果A的二进制值变成这样,那么内存中A的数据值就应该变成了00000000 01101101也就是整数109,那么结尾输出A的值是应该是109吧,为什么还是那个365呢 引用 1 楼 的回复……

------解决方案--------------------
探讨

c=a&amp;b;


高八位清零的结果存入 c 中了

------解决方案--------------------
应该是a&=b;就ok了
------解决方案--------------------
位运算不影响操作数本身的……

话说C/C++里能影响操作数本身的运算只有自增、自减和赋值。