哪位大侠能给详细的解释一下,谢谢!
15 个解决方案
#1
关注
#2
右移n位相当于除以2的n次方,左移n位相当于乘以2的n次方,谭浩强书里写着。
#3
理论上是一样,不过得到相应芯片上去检验,正数、负数移位后的情况。不过标准C语言是带符号移位,左移最低位补0,右移最高位补原先的最高位。
#4
个人感觉和 编译器有关,另外我想一般的CPU是支持移位运算的;和OS没有多少关系 吧;
#5
应该是这样的吧。
#6
这个结果我是知道的,我是想关注一下对于编译器来说,实际运行的方式是不是也是一样的(比如乘512和移位运算都按照移位操作)?
我怀疑有的编译器不会做优化,也就是说可能有的编译器会分别按照乘法和移位运算,有的编译器统一按照移位运算以提高效率。
不知道标准C在这方面是否有规定,编译器具体是如何处理的呢?
#7
跟操作系统无关
与编译器有关,一般来说,编译器优化后的结果是一样的
不过有的CPU带有硬件乘法器,这种情况下编译器编译出来的结果可能不一样,移位的速度肯定比乘法快
与编译器有关,一般来说,编译器优化后的结果是一样的
不过有的CPU带有硬件乘法器,这种情况下编译器编译出来的结果可能不一样,移位的速度肯定比乘法快
#8
理论上移位运算和乘2的N次方是一样的结果,但是否一样的操作则不一定,由编译器决定。如果有把握的话,还是移位好,移位的效果是一样的,乘法编译出来的结果有可能不同,最快也就是移位的效果。
#9
关注
#10
移位的操作,绝对够快,如果可以,尽量用移位而不是用乘方,谁知道编译器有没有优化呢。
#11
和符号有关系吗?
#12
应该是和编译器相关
#13
C/C++的语法规定位运算的规则,而编译器的厂商必须实现这个规则。规则本身与平台没有关系,所以你大可放心。
#14
关于基本运算的优化,这个需要编译提供这样的支持。
#15
一样的
#1
关注
#2
右移n位相当于除以2的n次方,左移n位相当于乘以2的n次方,谭浩强书里写着。
#3
理论上是一样,不过得到相应芯片上去检验,正数、负数移位后的情况。不过标准C语言是带符号移位,左移最低位补0,右移最高位补原先的最高位。
#4
个人感觉和 编译器有关,另外我想一般的CPU是支持移位运算的;和OS没有多少关系 吧;
#5
应该是这样的吧。
#6
这个结果我是知道的,我是想关注一下对于编译器来说,实际运行的方式是不是也是一样的(比如乘512和移位运算都按照移位操作)?
我怀疑有的编译器不会做优化,也就是说可能有的编译器会分别按照乘法和移位运算,有的编译器统一按照移位运算以提高效率。
不知道标准C在这方面是否有规定,编译器具体是如何处理的呢?
#7
跟操作系统无关
与编译器有关,一般来说,编译器优化后的结果是一样的
不过有的CPU带有硬件乘法器,这种情况下编译器编译出来的结果可能不一样,移位的速度肯定比乘法快
与编译器有关,一般来说,编译器优化后的结果是一样的
不过有的CPU带有硬件乘法器,这种情况下编译器编译出来的结果可能不一样,移位的速度肯定比乘法快
#8
理论上移位运算和乘2的N次方是一样的结果,但是否一样的操作则不一定,由编译器决定。如果有把握的话,还是移位好,移位的效果是一样的,乘法编译出来的结果有可能不同,最快也就是移位的效果。
#9
关注
#10
移位的操作,绝对够快,如果可以,尽量用移位而不是用乘方,谁知道编译器有没有优化呢。
#11
和符号有关系吗?
#12
应该是和编译器相关
#13
C/C++的语法规定位运算的规则,而编译器的厂商必须实现这个规则。规则本身与平台没有关系,所以你大可放心。
#14
关于基本运算的优化,这个需要编译提供这样的支持。
#15
一样的