黑马程序员技术交流社区

标题: 输出整数的二进制问题 [打印本页]

作者: 王庆功    时间: 2014-8-20 22:02
标题: 输出整数的二进制问题
在输出二进制的问题的函数老师的pirntBinary是这样的 :
void printfBinary(){
int temp=31;
while(temp>=0){
int value=number >>temp & 1;
printf("%d ",vlaue)
temp--;;
}
if((temp+1)%4==0){
pirntf(" ");
}
}
printf("\n");
}
我的疑问在这句int value = number>>temp & 1;我总是感觉这句话在执行完了后number的值被改变了,虽然我自己验证了number 的值没有被改变。但是我心里总是觉得移位应该是在number内存里的位置改变的,所以number的值在内存中应该被改变了。求解释
作者: 王庆功    时间: 2014-8-21 15:10
咋没人解答里。
作者: 天蚕飞    时间: 2014-8-21 15:21
这里的number没有变呀,要改变一个变量的值通常得通过赋值运算或者得到变量的地址间接改变,但是这里只是对number的值进行引用而已,所以其值是没有变的;而且如果number的值 变了,你想想循环执行一次,number值岂不是0就是1了。
作者: fantacyleo    时间: 2014-8-21 15:38
内存只是一个存储空间,没有任何计算功能。无论加减乘除还是移位,都是在CPU内完成的,所以不存在你说的“移位应该是在number内存里的位置改变的”
作者: 周易    时间: 2014-8-21 16:38
楼上二位大神  都解释得很好啊!!!
作者: 从今以后    时间: 2014-8-22 14:10
谢谢楼上两位的解答




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2