黑马程序员技术交流社区

标题: 一个小问题,请帮忙解答下 [打印本页]

作者: 马富林    时间: 2013-12-15 17:22
标题: 一个小问题,请帮忙解答下
为什么位运算比普通云算效率更高啊?
比如int x=12*4;
和   int y=12<<2;
位运算效率高是通过什么实现的?

作者: 呆呆呆    时间: 2013-12-15 17:29
计算机的运算模式是以二进制为基础,所以十进制运算在计算时会被转换成二进制再进行运算,而转换过程就会导致运行速度降低。也就实现了位运算高效。
作者: zzkang0206    时间: 2013-12-15 17:52
1、计算机在处理数据计算时首先把数据要转化为计算机能够认识的二进制,然后在由二进制进行运算操作,
比如int x=12*4;
就要把12和4转换成二进制的,在进行二进制的乘法运算,这样运算起来就比较麻烦
2、如果使用了位运算,最基本的就是使用左移右移
比如int y=12<<2;
只需把12转换成二进制,然后在左移2位就可以。在计算效率上就普通运算要高。

作者: 豆晨阳    时间: 2013-12-15 18:20
以12<<2为例,12的二进制为00001100,12<<2就相当于将12的二进制数左移以为0|00011000|为24,更加简便
另外位运算要注意:
>>移位后最高位补什么由原有数据的最高位值而定,如果最高位为0,右移后,用0补空位。如果最高位为1,右移后,用1补空位
>>>无论最高位是什么,右移后,都用0补
<<,<<<左移后都用0补空位





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2