C语言问题关于按位右移左移?

若有int a=0100,b=2;则表达式a>>b的值为?
我看答案上写的是1,但是int的表示形式只有八进制十进制跟十六进制吧?这程序我从VS上跑了一下答案是16跟我想的一样,是不是答案错了?这里的0100指的应该是八进制的0100也就是十进制的64对吧,还有就是关于按位右移与左移运算符中,如何判断数据溢出?

这里的0100并不是c语言的语法,而是一种二进制的说法,不能直接按照八进制理解的
因为位运算都是按二进制位来的 所以书上也会拿二进制做例子方便理解
另外移位操作不存在溢出,不管怎么移,必然会有一位舍去,一位补上,算术操作的溢出在移位中是不适用的
如果要判断左移是否会舍去1,那么判断最高位是不是1就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-21
因为没啥问题,就是十进制的64
相似回答