c++程序里面for(j=1;j<=goodsvalidnum;j=j<<1)是什么意思,特别是j=j<<1是什么意思

如题所述

<< 是位操作 中的 左移操作,后面的数字表示左移的位数。比如说int x = 5,为方便,只看x的后四位吧(实际上c++里面int有32bits),那就是'0101',做了<<1之后就成了'1010'(移位默认的是补0)。注意到c++中所有的类型都是以2进制形式储存的!所以左移1就相当于乘了2,同理左移2相当于乘4,左移3相当于乘8...当然要保证没有溢出(overflow)!
这个程序的这个地方用得很好,因为j = j << 1要比j = j *2快很多,而且效果是一样的!如果循环的次数很多的话,这种优势会更加明显。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-21
j=j<<1
表示将j左移一位,也就是乘以2,再存在j中
第2个回答  2011-07-21
将当前的J值向左位移一位

c++程序里面for(j=1;j<=goodsvalidnum;j=j<<1)是什么意思,特别是j=j<...
这个程序的这个地方用得很好,因为j = j << 1要比j = j *2快很多,而且效果是一样的!如果循环的次数很多的话,这种优势会更加明显。

c++程序编译时一直出现: 致命错误C1004:想不到文件尾端发现,怎么解决啊...
link[v].v[k1].u = goods[z-1].price;k1++;cout << "名称:" << goods[z-1].nam << endl << "价格:" << goods[z-1].price << "亿美元\/件" << endl << "数量:" << goods[z-1].numbers << "销量:" \/\/输出想要查看的商品信息 << goods[z-1].sales_volume << end...

课程设计包含哪些东西
for(i=1;i<n;i++) { if(goods[i].w>cu)\/\/当该物品重量大与剩余容量跳出 break; goods[i].X=1; cu=cu-goods[i].w;\/\/确定背包新的剩余容量 } if(i<=n) goods[i].X=cu\/goods[i].w;\/\/该物品所要放的量 for(j=2;j<=n;j++) { goods[0]=goods[j]; i=j-1; while (goods[0]...

C++的一个程序换行问题?
键盘输入结束标志是换行符。所以必须换行。多次输出,只要不给endl 就不换行。如果把键盘输入改用文件输入。再把输入的内容显示出来,就看不到换行了。不过,这样做没多少实际意义。

C语言 fprintf出错
goods[8].goodsname='I';goods[9].goodsname='J';\/\/for(n=0;n<10;n++)goods[i].goodsnum=0; 此处有错 for(n=0;n<10;n++)goods[n].goodsnum=0;printf("请输入要购买商品的号码\\n");printf("按x键返回首页\\n");for(ch='a';ch!='x';){ scanf("%s",&ch);if(ch=='x...

求c++程序(有注解),输入一串字母,输出对应的数字,a→1,b→2……z→2...
{ count = 0;break;} n[count] = str[i]-'a'+1;\/\/字符串转换为数字量并存储 count ++;c = str[i];} } if (0 == count){ cout<<count<<endl;} else { for (int j=0;j<count;j++){ cout<<n[j]<<" ";} } cout<<endl;} ...

相似回答
大家正在搜