`
loveme13
  • 浏览: 24885 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java 移位运算

    博客分类:
  • Java
阅读更多
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
  在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。

      386 以后的硬件把移位对字长进行取模,右移32位就是右移了0位(CPU 把右移的位数 32 对于字长 32 进行取模运算,得到 0),因此 9 右移 32 位仍然是 9。你可以换一下for循环的条件,比如换成i<=64,你会发现结果是一样的。

      三种移位运算符的移动规则和使用如下所示:
  <<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
  语法格式:
  需要移位的数字 << 移位的次数
  例如: 3 << 2,则是将数字3左移2位
  计算过程:
  3 << 2
  首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
  在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
  >>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补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次方。
  >>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
分享到:
评论

相关推荐

    Java移位运算

    主要讲述Java中移位运算,包括:基本数据类型范围、二进制的概念,移位运算符,基本数据类型与二进制之间的转换等。

    JAVA基础之java的移位运算

    对byte 和short类型的值进行移位运算的结果是int 型,而且如果左移不超过31位,原来对应各位的值也不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展。...

    【IT十八掌徐培成】Java基础第02天-04.运算符-移位运算-逻辑运算.zip

    【IT十八掌徐培成】Java基础第02天-04.运算符-移位运算-逻辑运算.zip

    Java利用移位运算将int型分解成四个byte型的方法

    今天小编就为大家分享一篇关于Java利用移位运算将int型分解成四个byte型的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Java中的位运算符、移位运算详细介绍

    主要介绍了Java中的位运算符、移位运算,有需要的朋友可以参考一下

    文件移位加密与解密

    文件移位加密与解密 C语言实现 完整代码 截图显示

    java2入门经典.part01

    java2入门经典.part01 Java2入门经典 图书目录 译者序 序 前言 第一章:Java概述 什么是Java ...移位运算 按位运算的方法 有固定序列整型值的变量(枚举) 布尔型变量 运算符的优先级 程序注释 本章小结 ……

    Java2入门经典.rar

    译者序 序 前言 第一章:Java概述 什么是Java Java语言的特性 学习Java ava程序 学习Java要走的路 ...移位运算 按位运算的方法 有固定序列整型值的变量(枚举) 布尔型变量 运算符的优先级 程序注释 本章小结 ……

    java学习资料

    Day03:java 的移位和逻辑运算 Day04:java 的基本语句 Day05:java 的循环语句和方法数组介绍 Day06:java 的递归和二维数组介绍 Day07:java 的排序算法介绍 Day08:java 的面向对象基础 Day09:java 面向对象(二)...

    Java中位运算(移位、位与、或、异或、非) 的简单实例

    Java中位运算(移位、位与、或、异或、非) 的简单实例,需要的朋友可以参考一下

    java新手_入门算法_经典

    构成何种三角形、几月属于第几季度、已知半径求体积、输入的n个数之和、移位运算、循环算法、密文 虽然不多,可也是刚开始学java的时候copy的。。。

    Java byte 位移操作 注意事项

    Java对byte 的 + – * / &gt;&gt; &gt;&gt;&gt; &lt;&lt; & | ^ (加,减,乘,除,右移,左移,无符号右移,位与,位或,位异或)操作,均会是首先将byte转化为int, 再行运算。这一事实可能导致多种问题:  假设我们想进行如下...

    Java大作业基于JavaSwing实现的模拟程序员计算器源码+项目说明.zip

    `已完成`反码、补码和移位运算 `已完成`实现单一进制模式下的带括号的组合多步运算 `已完成`实现混合进制模式下带括号的组合多步运算 `已完成`设计运算溢出等出错提示。 备注 课题要求中给出的基本要求和提高...

    基于Java Swing实现的程序员计算器【源码包+jar包+exe可执行文件】

    1. 该计算器为程序员计算器,在实现基本运算功能的情况下拓展了程序员经常要用到的的进制转换,以及移位和取余等操作; 2. 仅支持十进制的输入。第2行为十进制输入,第3行为2进制转换结果,第4行为8进制转换结果,第...

    JAVA经典算法90题(三)

    可能用二进制的移位运算更快更好,但是新学java,不太熟,求高人指点啊

    java深入解析

    56 话题11 强大相径庭——相除与求余在Java中的具体表现 61 话题12 移形换位——移位运算的真实剖析 75 话题13 鞭辟近里——条件运算符(?:)的类型深入 81 话题14 井然有序——运算顺序的详细挖掘 86 话题15 ...

    Java运算符介绍.pptx.pptx

    算术运算符包括加、减、乘、除和取余等基本运算,它们可以对整数、浮点数和字节进行操作,实现了基本的数学计算功能。 位运算符详解 位运算符主要用于处理二进制数据,包括与、或、非、异或和移位等操作,它们可以...

    java基础案例与开发详解案例源码全

    3.5.3 表达式的运算顺序52 3.5.4 优先级和结合性问题52 3.6 选择结构54 3.6.1 顺序语句54 3.6.2 选择条件语句54 3.6.3 switch结构59 3.6.4 经验之谈-常见错误的分析与处理65 3.6.5 Switch和多重if结构比较66 3.7 ...

    java学习总结 1.《Java核心技术》.rar

    3、移位操作符右边的参数要先进行模32运算(当左边的变元是long型,则模64),如1。浮点运算的中间结果程度是不一致的。有些处理器适用80bit浮点存储器,有些则使用64bit、80bit。直到最后才把结果截断为64bit,这样做...

    整理后java开发全套达内学习笔记(含练习)

    进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...

Global site tag (gtag.js) - Google Analytics