移位运算符就是在二进制的基础上对数字进行平移。
   
    我们知道,Java中byte、short和char类型在进行计算时都是先将其转换为int类型,同样在进行移位运算时也不例外。它们移位后的结果也都会变成int类型。由于int类型为32位的(1),所以对于byte、short、char和int进行移位时,规定实际移动的次数最多是31位,如果超过31,则按n = n % 32来计算,也就是说移位33次和移位1次得到的结果相同。移动long型的数值时(long是64位的),规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。您可以亲自动手做下试验。
   
    现在我们介绍Java中的三种位移运算符:
   
    1)《(左移)
   
    运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
   
    语法格式:
   
    需要移位的数字 《 移位的次数
   
    例如: 5 《 2,则是将数字5左移2位
   
    计算过程:
   
    5 《 2
   
    首先把3转换为二进制数字(int类型的话为32位,8字节;long的话为64位16字节)0000 0000 0000 0000 0000 0000 0000 0101,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0001 0100,则转换为十进制是20
   
    数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。比如5 《 2 = 5 * 4
   
    2)》(带符号右移)
   
    运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补0,负数补1.
   
    语法格式:
   
    需要移位的数字 》 移位的次数
   
    例如11 》 2,则是将数字11右移2位
   
    计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.
   
    数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
   
    3)>>>(无符号右移)。
   
    运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。其他结构和》相似。
   
    位移运算通常用来对代码进行速度上的优化,用它来代替乘除法将是很好的选择。
   
    下面来举几个例子,希望对大家使用位移运算符有所帮助
   
    1.用位移运算符来实现  i / 100
   
    100 = 64 + 32 + 4
   
    所以对i / 100可以这样来表示: ( i 《 6 ) + ( i 《5) + ( i 《 2 )
   
    2.写出( q 《 3 ) + ( q 《 1 )实现的代码
   
    原式 = q * 2 ^ 3 + q * 2 ^ 1 = q * ( 8 + 2) = q * 10

转载于:https://blog.51cto.com/cfkjava/919786

Java中的位移运算符相关推荐

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

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

  2. java中的位移运算符_Java 位移运算符

    本人只是 Android小菜一个,写技术文档只是为了总结自己在最近学习到的知识,从来不敢为人师,如果里面有些不正确的地方请大家尽情指出,谢谢! 1.概述 Java 位移运算符是Java中基本的位运算操 ...

  3. Java 中的位移运算符

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

  4. java中的位移运算符_java中的移位运算符(, , )

    java中有3种移位运算符 < >>  :  右移运算符,不改变符号位,num >> n 表示二进制右移n位,结果相当于 num / (2的n次方) >>&g ...

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

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

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

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

  7. java中的比较运算符_Java基础---Java中的比较运算符(十三)

    Java中的比较运算符 比较运算符用于判断两个数据的大小,例如:大于.等于.不等于.比较的结果是一个布尔值( true 或 false ). Java 中常用的比较运算符如下表所示: 注意哦: 1. ...

  8. Java中亦或运算符

    Java中亦或运算符 最近遇到这样一道算法题:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 示例: 输入[2562569] 输出:9 当时毫无 ...

  9. java中的++与--运算符

    java中的++与–运算符 1.++自加 2.–自减 注意: (1)运算符出现在变量的左边,则先对变量进行加/减1,然后带入表达式进行计算 (2)运算符出现在变量的右边,则先将变量带入表达式中进行计算 ...

最新文章

  1. 我眼中的DevOps(转)
  2. js事件触发器fireEvent和dispatchEvent
  3. C语言输出素数简单,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  4. mysql 二进制安装卸载_MySQL二进制版本的安装及卸载
  5. Oracle Buffer-cache (数据高速缓存)作用概述
  6. wxWidgets:wxPaintEvent类用法
  7. [Windows驱动开发](二)基础知识——数据结构
  8. [IOC]Unity使用
  9. 【RS】Amazon.com recommendations: item-to-item collaborative filtering - 亚马逊推荐:基于物品的协同过滤...
  10. oracle的安装与plsql的环境配置
  11. 关于shell脚本编程一些有用资源的小结
  12. spark基础之shuffle机制和原理分析
  13. 设计模式---开闭原则
  14. linux 查看所有端口号_linux系统:ss命令
  15. 水泵怎么做_燃气壁挂炉初次调试,要怎么做才好?
  16. vc浏览器_【36氪基金X一刻】零基础VC/PE行研标准班7月10日线上开课
  17. 腾讯云一站式物联PaaS平台IOT Suite助力行业加速“物联网+”
  18. 开发网站为“禁止复制”“禁用右键功能”(易被破解)
  19. 【MPEG】DVB / ATSC / ISDB区别
  20. 2016中期中国云计算市场报告

热门文章

  1. WordPress响应式Alt_Blog主题 简约博客主题
  2. 设计模式之美:Strategy(策略) -未经作者同意的转载
  3. ollyice的学习
  4. 如何更改Live Writer发布照片到不同相册
  5. ASP.NET 4中的SEO改进
  6. Repeater控件绑定数据、分页、数据操作,最佳代码
  7. Linux Shell脚本入门教程系列之(七)Shell输出
  8. 深入理解JavaScript系列:根本没有“JSON对象”这回事!
  9. Linux——umask使用详解
  10. linux(十三)之磁盘分区、创建文件系统、挂载