转载自该篇博文下网友nan_python发布的评论并略作修改,侵删

<< : 左移运算符,空位补0

>> : 算术右移运算符,空位补最高位值

>>> : 逻辑右移运算符,空位补0

快速算出移位运算符结果方法:

在不大于自身数值类型最大位数的移位时,一个数移位n,就是将这个数乘以(左移)2的n次幂,

右移就是除,然后都取整就可以了

比如int 32位的(64位同理)

500>>3 这样算:500/8 取整 就是62

356>>4 356/16 结果是 22

8<<3 8*8 结果是 64

如果移动过大超过了32位怎么办?移位数和32取余得到的数字在套用上面就可以了

比如 500>>67 怎么算?(就相当于500>>3)

1. 先67对32取余 结果是3

2. 然后500/8 结果62

计算机指令中的左移就是补0,右移位运算符有2种

1. 算术右移 :移动后补的是最高位的值。

举例:一个byte数字99 的二进制是 0110 0011

你右移4位后 补的是0 ------0000 0110

但是再看这一个:byte数字-107二进制是1001 0101 这是1开头的

你右移4位后补的确是最高位1 -------1111 1001

2. 逻辑右移 :空位补0

针对右移,C语言一般根据编译器/机器组合来确定用哪种,但大多数默认算术右移。JAVA明确规定x>>k是算术右移,x>>>k是逻辑右移

话说回来之所以区分这一点我想应该是对有符号的规定吧,无符号右移肯定是逻辑的啊。最高位本

来就是0,然而对于负数最高位是1,在进行右移时算术右移的提出解决了一个很普遍的问题,那就

是负整数的除法运算,你负数除以一个正数一定是负数吧,如果没有算数右移这一概念的提出不补

1都补0的话你得到的就是正数了,算术右移可以替代除法运算。有了这个就完美了,得到的还是负

数,符合现实中数学常识了。

java中的移位运算符<<,>>,>>>相关推荐

  1. java中的移位运算符与无符号位移

    引用: java中有三种移位运算符 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >&g ...

  2. java中有三种移位运算符

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  3. java中的移位运算符

    移位运算符是在数字的二进制形式上进行平移.主要有左移(<<).带符号右移(>>)以及无符号右移(>>>). 左移运算符(<<)的运算规则为:按二进 ...

  4. java 偏移符号_java中的移位运算符总结

    java中的移位运算符:<>,>>>总结 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> ...

  5. java中 移位运算_java中关于移位运算符的demo与总结(推荐)

    首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0 ...

  6. java右移位_java中的移位运算符:,,总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  7. Java 中的位移运算符

    在源码中经常会看到一些位移运算符的使用,比如在看HashMap源码的时候,在计算hashMap容量的阈值的时候,就使用到了位移运算符,代码如下: java中有三种移位运算符 <<     ...

  8. java三种移位运算符

    java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >> 1,相当于num除以2 &g ...

  9. Java培训教程:Java中的位移运算符!

    学习Java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,通过系统学习学到Java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天小千给大家分享的 ...

  10. java里面value_「Java基础知识」Java中包含哪些运算符

    原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...

最新文章

  1. 论怎么写好一篇实验报告
  2. 记录避免一些逻辑问题的过程
  3. kerberos 身份认证 简介
  4. 【转】Oozie4.2.0配置安装实战
  5. Silverlight 4 新特性之Silverlight as Drop Target
  6. Date类的构造方法以及成员方法220
  7. 开源DataBase组件:FluentMigrator
  8. 加载PageOffice控件失败。 当前浏览器是42版本以上的谷歌浏览器,建议采用POBrowser技术打开PageOffice即可。
  9. 深入理解JS对象和原型链
  10. 送书 | 《深入浅出Python机器学习》
  11. 稳压二极管的工作原理及稳压二极管使用电路图
  12. 离散数学期末复习—学习笔记
  13. pc机箱 图纸_如何升级到新的PC机箱
  14. ionic代码压缩与代码混淆
  15. 巴菲特致股东的一封信:1991年
  16. 微信小程序样式Flex Box精通课程-Flex容器的属性-justify-content内容对齐(左中右)
  17. Deferred Shading介绍
  18. 谭浩强C++ 第一章(第三版)
  19. matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...
  20. java中的构造方法必须和类名相同,在Java中,关于构造方法,下列说法错误的是()A、构造方法的名称必须与类名相同B、构造方法可以...

热门文章

  1. 小白如何连续两年美赛斩获M奖
  2. python 状态空间模型_基于状态空间的建模过程
  3. JAVA实现杨辉三角的三种方式
  4. 多终端房地产项目管理系统源码,源码分享
  5. PR视频旋转处理方法
  6. 图扑软件数字孪生 | 基于 BIM 技术的可视化管理系统
  7. 电脑上快速制作小一寸照片教程
  8. 【概率论】标准正态分布及概率表
  9. AVPlayer 音视频缓存方案
  10. C语言将字符串转换为数字