再问一个问题:输入一个整数,将其低位字节清零后输出.
是什么意思啊,题目让我们具体的做什么呀?谢谢了哈.

a=x%2;//得到x的末位0或1
x=x/2;//相当于x向右移动一位
循环执行上述两句,相当于把x的二进制表示求出来了
b=y%2;
y=y/2;执行情况及作用和上述情况类似
z=z+a*b*k;//当a和b均为1时,z的值才增加,相当于a和b进行与运算
k=k*2;//权值依次增加
也就是说当x和y的二进制表示中的对应位均为1时,z此时才会增加,增量为该位所对应的权值
比如x=10,y=14
x用二进制表示为1010
y用二进制表示为1110
可以看出x和y的二进制表示只有在第2位和第4位才同时为1,它们对应的权值分别为2、8,所以z最后的输出应该为10
[此贴子已经被作者于2007-10-3 18:40:24编辑过]
再问一个问题:输入一个整数,将其低位字节清零后输出.
是什么意思啊,题目让我们具体的做什么呀?谢谢了哈.
可以用C中的位运算实现,比如有一个整数a,与十六进制数f0进行按位与运算
a=(int)(a&0xf0)就相当于把低位字节全部清零。
位运算一般在底层编程时用得到吧,特别是对硬件操作的时候。现在的操作系统,以及硬件驱动,都会用到位运算的!高级编程用得就少了吧!~