首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-19 
关于C语言位运算的问题,本人新手以下是代码#include stdio.h#include conio.hmain(){int a,b255,cpr

关于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++里能影响操作数本身的运算只有自增、自减和赋值。

热点排行