当前位置: 代码迷 >> C语言 >> 该程序的功能是什么?
  详细解决方案

该程序的功能是什么?

热度:47   发布时间:2007-10-03 17:00:39.0

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


----------------解决方案--------------------------------------------------------

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编辑过]


----------------解决方案--------------------------------------------------------
以下是引用zzsy04et138在2007-10-3 17:00:39的发言:

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

可以用C中的位运算实现,比如有一个整数a,与十六进制数f0进行按位与运算
a=(int)(a&0xf0)就相当于把低位字节全部清零。

位运算一般在底层编程时用得到吧,特别是对硬件操作的时候。现在的操作系统,以及硬件驱动,都会用到位运算的!高级编程用得就少了吧!~

----------------解决方案--------------------------------------------------------
2楼写的很明白我是知道了
----------------解决方案--------------------------------------------------------
顶12,13楼,说得很明白:)
----------------解决方案--------------------------------------------------------
呵呵,谢谢楼上的朋友们,现在知道了.
----------------解决方案--------------------------------------------------------

  相关解决方案