如有转载,请注明出处:  http://www.cnblogs.com/flydoos/archive/2011/09/06/2169280.html

移位运算(左移和右移)

这是网上流传的“变态级JAVA程序员面试32问”的其中一题(二十八题),然后下面给出来的答案是
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
答案: 2 << 3
粗看似乎很在理,大致想来2<<3会是移位操作,在Java的字节码中移位指令是ishl(右移),而在CPU上的硬件指令可能就会是shl(算术右移指令)。其实不然,如果熟悉汇编语言,还考虑过编译优化,2<<3根本不会使用移位操作,而是在编译时就优化计算出16来了。
----------------------------------------------------------------

下面开始进行简单的说明:

通俗的说,位移的实现是将数据转换成二进制后,进行左右移动的。如果左移,则右边补零,如果是右移,则是左边补零,后边溢出的则去掉。因此,左移可以理解为整数的乘法,而右移则是理解为整数的取整除法。

左移 (<<)

将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0。
  左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。

x<<1= x*2 
  x<<2= x*4 
  x<<3= x*8 
  x<<4= x*16

同理, 右移即相反:

右移 (>>) 
  将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。

  右移相当于整除. 右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。

x>>1= x/2 
  x>>2= x/4 
  x>>3= x/8 
  x>>4= x/16

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>

阅读(1) | 评论(0) | 转发(0) |

0

上一篇:快速排序优化

下一篇:卡特兰数

相关热门文章
  • 编写安全代码——小心有符号数...
  • 字符串移位包含的问题...
  • 西三旗空调维修空调加氟561915...
  • python 海龟绘图
  • OJ-坐标移动
  • test123
  • 编写安全代码——小心有符号数...
  • 使用openssl api进行加密解密...
  • 一段自己打印自己的c程序...
  • sql relay的c++接口
  • 我的ChinaUnix博客被锁定了,...
  • 怎样破解雅虎邮箱密码...
  • 虚拟机中ubuntu无线连接问题...
  • IBM DS3400 盘阵怎么查看是单...
  • 启动auditd时,报错如下,怎么...
给主人留下些什么吧!~~
评论热议

移位运算(左移和右移)相关推荐

  1. C语言移位运算 左移长度大于数据类型字节数的情况

    看CMU的CSAPP课程时,遇到一个很有意思的问题,特此查询资料,记录一下 1. 测试 sizeof(int) = 4 // int 数据类型位4个字节(32位) 测试程序1: 把a左移30位时 (正 ...

  2. 彻底理解位运算——左移、右移

    相信大家在各种语言各种框架中都能看到二进制的操作.左移.右移.&.|.^等等操作.那么这篇帖子让各位彻底弄懂左移.右移. 首先先区分那个是左移.那个是右移,这很简单,从箭头指向的方向来区分.& ...

  3. 位运算——左移和右移

    <<(左移) 1.运算规则: 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的 空位补零. 2.语法格式: 需要移位的数字 << 移位的次数 例如: 3 & ...

  4. JAVA移位运算符-左移、右移、无符号右移 (简解)

    java移位运算符:<<(左移).>>(带符号右移)和>>>(无符号右移). 一.左移运算符<< m<<n 代表把数字m在无溢出的前提 ...

  5. 二进制位运算 左移与右移

    (1).二进制中负数的计算 负数以正数的补码表示 原码:一个整数按照绝对值的大小转化成二进制的数 反码:将二进制数按位取反 补码:反码加 1 以-14 举例 原码:14 即 00000000 0000 ...

  6. Java位运算之移位运算

    文章目录 移位运算 左移 << 位运算符 右移 >> 位运算符 无符号右移 >>> 运算符 移位运算 移位运算符在程序设计中,是位操作运算符的一种.移位运算符 ...

  7. c++中的左移、右移运算

    移位运算包含"逻辑移位"(logical shift)和"算术移位"(arithmetic shift). 逻辑移位:移出去的位丢弃,空缺位(vacant bi ...

  8. c语言中左移和乘法谁高级,C程序员说使用移位运算代替乘法和除法更有效,是真的吗?...

    在C语言程序开发中,某些移位操作似乎达到与乘法和除法运算相同的效果. 例如,4 >> 1等于2,向右移一位等于2除. 类似地,2 << 1等于4,向左移一位等于2. 因此,一些 ...

  9. 计算机组成补码的左移,计算机组成原理 移位运算

    <计算机组成原理 移位运算>由会员分享,可在线阅读,更多相关<计算机组成原理 移位运算(12页珍藏版)>请在人人文库网上搜索. 1.3-1 移位操作.十进制运算及逻辑运算,移位 ...

最新文章

  1. linux孤立cpu,Linux 抛弃旧款 CPU,一下子少 50 万行代码
  2. 开源实体映射框架EmitMapper介绍
  3. 036_CSS导航条
  4. 深挖BAT内部级别和薪资待遇
  5. 蓝色巨人将磁带定位为数据存储的集成归档层
  6. 上周ASP.NET英文技术文章推荐[05/06 - 05/12]
  7. java join yield_Java多线程中join、yield、sleep方法详解
  8. Canvas--圆弧和圆
  9. mssql 无法启动调试器 数据为空_Windows无法启动:如何利用PE拯救桌面重要数据?...
  10. Python使用正则表达式检查书稿中不应该出现的重复字
  11. 对我启发最大的数学学习方法
  12. 微服务网关 vs K8s Ingress
  13. C语言实战--DLL注入器
  14. 图像特征算法——SIFT、HOG
  15. Movist Pro for Mac 2.2.16 — 播放器
  16. 阿里 P6 到底应该具备哪些核心能力?
  17. TFB cas:223569-31-1,聚合物光电材料
  18. 小米/红米手机如何通过USB数据线把手机网络共享给电脑
  19. 中国56个民族sql语句
  20. 《Mysql是怎样运行的》读书笔记之B+树索引

热门文章

  1. 信息安全实验六:RSA数字签名算法 2019.06.01
  2. C语言知识-零零散散(三)
  3. Python——保存图片到本地
  4. [2021.8纪中集训Day14]
  5. pytorch cuda
  6. 【51nod】2059 上台阶 easy
  7. WPF学习之深入浅出话模板
  8. shell命令查阅端口信息_Linux服务器管理Shell经典命令
  9. 堆排序(JAVA版)
  10. 在MATLAB中创建函数