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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨增坤 于 2013-9-23 16:37 编辑

学了以为知道右移相当于除二,左移乘二,还有无符号右移,可是有什么用呢?什么时候能派上用场?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

5 个回复

正序浏览
我的基础测试题中有道题目是:
2*8效率最高的算法是?答案就是利用移位运算符,移位运算比乘法效率要高。
回复 使用道具 举报
编码间的转换时都会用到。
无论是字符编码,比如GBK转Unicode
基础类型转换字符串,比如int转字符串'123'
视频音频编码,压缩编码,加密编码
网络协议、数据文件格式,比如BMP,WAV。。。
任何数据的显示、存储各种形式的转换都会用到位运算
精确到bit的操作都要用到位运算。
位运算是最基础计算机操作。。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
个人理解:计算机直接运行乘除运算时都很耗内存,用位移运算符来代替,运算速度会快很多,因为程序就是移动了一下而已,这样就提高了效率,节约资源。
      至于用法,我觉得就是做乘除法时可以运用,例如,我的测试题中有一题是"编程计算3乘8等于几,什么方法效率更高?"结果肯定用到位移了,代码简单,又高效。以后遇到这种问题就可以直接用位移运算。我现在这水平也就对位移运算符这点理解吧。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
移位运算符和位运算符在平时我们使用较少,但并不意味他们无用。
相反,它使用起来直接针对底层数据,效率很高,只是存在局限性并且阅读性不太好,所以使用较少。
目前为止,我们可能在以下情境中使用到。
1.普通运算中,如某个数与2的幂相乘除时,可以使用移位。
  或者我们要对某个数进制转换,可使用移位运算符和位运算符相结合的方法。
2.面试中,会要求你设计出效率较高的算法或者针对移位运算符考察你对数据底层的掌握程度。
我目前大致只能想到这些,希望对你有些帮助。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
当你做运算的时候就能用的上了。往后学你就知道了。
后面会有进制转换,会进行无符号右移
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马