L*******g 发帖数: 913 | 1 比如下面这个,n=100,为什么最后it=0? 谢谢。
for (it=1,j=1;j |
o***g 发帖数: 2784 | 2 it <<= 1就是 it = it<< 1;
it类型是啥?
这个循环是it左移99位
【在 L*******g 的大作中提到】 : 比如下面这个,n=100,为什么最后it=0? 谢谢。 : for (it=1,j=1;j
|
L*******g 发帖数: 913 | 3 谢谢。it是int型,这个移位的效果/用途是什么?
【在 o***g 的大作中提到】 : it <<= 1就是 it = it<< 1; : it类型是啥? : 这个循环是it左移99位
|
o***g 发帖数: 2784 | 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型,这个移位的效果/用途是什么?
|
c*******h 发帖数: 527 | 5 不管什么类型
二进制移动就是了
【在 L*******g 的大作中提到】 : 谢谢。it是int型,这个移位的效果/用途是什么?
|
O*******d 发帖数: 20343 | 6 left shift operation. 楼主需要复习一下二进制。 |