Redian新闻
>
C语言里的<<=是什么意思?
avatar
C语言里的<<=是什么意思?# Programming - 葵花宝典
L*g
1
比如下面这个,n=100,为什么最后it=0? 谢谢。
for (it=1,j=1;j
avatar
o*g
2
it <<= 1就是 it = it<< 1;
it类型是啥?
这个循环是it左移99位

【在 L*******g 的大作中提到】
: 比如下面这个,n=100,为什么最后it=0? 谢谢。
: for (it=1,j=1;j
avatar
L*g
3
谢谢。it是int型,这个移位的效果/用途是什么?

【在 o***g 的大作中提到】
: it <<= 1就是 it = it<< 1;
: it类型是啥?
: 这个循环是it左移99位

avatar
o*g
4
看来你不知道啥是位移
比如一个byte: 0000 0001
左移一位就是0000 0010
位移运算老快了。所以有的需要*4之类的就可以左移两位,速度上快N倍。
计算机无非是用0和1来表示你定义的东西,失去定义就剩一些0和1了,没意义。
比如定义一个byte的最右一位表示有无太阳,1表示有,0表示没有
这个byte的右数第二位表示有无月亮,1表示有,0表示没有
那0000 0001就表示有太阳没有月亮。左移一位就变成0000 0010,变成有月亮没有太阳
了。
对了,对位移操作的变量更应该关心其长度。
比如it是int可能是32位的,64位的或128位的。(也可能是其他长度的)
要是128位的,那结果就不是0了

【在 L*******g 的大作中提到】
: 谢谢。it是int型,这个移位的效果/用途是什么?
avatar
c*h
5
不管什么类型
二进制移动就是了

【在 L*******g 的大作中提到】
: 谢谢。it是int型,这个移位的效果/用途是什么?
avatar
O*d
6
left shift operation. 楼主需要复习一下二进制。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。