A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马富林 中级黑马   /  2013-12-15 17:22  /  1147 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么位运算比普通云算效率更高啊?
比如int x=12*4;
和   int y=12<<2;
位运算效率高是通过什么实现的?

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

3 个回复

倒序浏览
计算机的运算模式是以二进制为基础,所以十进制运算在计算时会被转换成二进制再进行运算,而转换过程就会导致运行速度降低。也就实现了位运算高效。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
1、计算机在处理数据计算时首先把数据要转化为计算机能够认识的二进制,然后在由二进制进行运算操作,
比如int x=12*4;
就要把12和4转换成二进制的,在进行二进制的乘法运算,这样运算起来就比较麻烦
2、如果使用了位运算,最基本的就是使用左移右移
比如int y=12<<2;
只需把12转换成二进制,然后在左移2位就可以。在计算效率上就普通运算要高。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
以12<<2为例,12的二进制为00001100,12<<2就相当于将12的二进制数左移以为0|00011000|为24,更加简便
另外位运算要注意:
>>移位后最高位补什么由原有数据的最高位值而定,如果最高位为0,右移后,用0补空位。如果最高位为1,右移后,用1补空位
>>>无论最高位是什么,右移后,都用0补
<<,<<<左移后都用0补空位

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马