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

求解移位运算符!解决办法

2012-04-08 
求解移位运算符!#includeiostreamusing namespace stdint main(){int a77,b33,c57coutab(

求解移位运算符!
#include<iostream>
using namespace std;
int main()
{
int a=77,b=33,c=57;
  cout<<"a<<b="<<(a<<b)<<endl;
return 0;
}
求解移位运算符,为什么结果是154啊
怎么算的啊

[解决办法]
有可能是编译器认为左移32位相当于没移位,直接给优化成左移1位了
相当于*2,所以就是77*2=154

[解决办法]
移位运算符,作用于带符号数的时候要小心,尤其是像你这种移得很多,可能符号位溢出的情况...
[解决办法]
对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。。。

[解决办法]
移位运算的移位数直接对变量位数取余,int型右移33位直接对33取余视为右移1位
根本谈不上什么优化,标准就是这么规定的
[解决办法]
所以01001101向左移一位为1为10011010=154

探讨

对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。。。

热点排行