首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

移位运算符,该怎么解决

2013-01-27 
移位运算符int a 8cout(a2)endl请问为什么输出结果是2.(我知道如果第二条语句改为cout(a2)

移位运算符
int a = 8;
cout<<(a>>>2)<<endl;
请问为什么输出结果是2.(我知道如果第二条语句改为cout<<(a>>2)<<endl;时,输出结果为2)?
[解决办法]
>>是带符号右移,即负数前面补1,整数前面补0
>>>是无符号右移,即不论正负,前面都补0
int a=8的二进制是
0000 0000 0000 0000 0000 0000 0000 1000
不管是>>还是>>>都是前面补0
所以你右移2位,前面补0,就是2
[解决办法]
大侠,C++里面没有">>>",只有java里面才有,是逻辑右移的意思,而">>"是算术右移.
这里8算术右移和逻辑右移的结果都一样,建议看看基础

热点排行