【发布时间】:2015-03-06 18:43:38
【问题描述】:
我目前正在学习 C++ 考试。练习考试的题目之一是:
这条语句的输出是什么。
cout <<(11>>1)<<1<<endl;
在我看来。 11 持有
的二进制等价物1011.
将此二进制数右移 1 位使其:
0101
然后将第一个向左移动就可以了
1010
计算结果为 10。
但是,通过在我的编译器中运行相同的语句,它会显示该数字的计算结果为 51。有人可以向我解释一下吗?
【问题讨论】:
-
你试过
cout <<((11>>1)<<1)<<endl;吗? -
不是 51,而是 5 后跟 1。
-
谢谢大家的回答!我确实觉得人们会否决这个问题非常令人失望。我只是想学习
-
我希望你学会不要写这样的代码。
标签: c++ bitwise-operators bit-shift