`
jdlsfl
  • 浏览: 159763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的位移操作

阅读更多

“<<”, “>>”, “>>>”在Java中是左移、有符号右移和无符号右移运算符。位移运算符只对int值进行操作,如果不是int,编译器会报错。在Java中,一个int的长度始终是32bit,也就是4个字节。

比如t>>>n的含义就是把整数t右移n位,高位补上零。所以如果t是个负数,最高位是1,那么经过无符号右移之后,就成了一个正数。比如 -1>>>31=1。

值得注意的是,虚拟机在进行位移操作之前,把位移的位数(即“t>>>n”中的n)对32取了模,左移或右移33位等价于移动1位,而且无论任何数,使其移动32位,其值都不会发生变化。因为在虚拟机看来,t>>>32与t>>>0是等价的(同理t<<32等价于t<<0)。移动64位也是如此,以此类推。

那如果移动的位数 n 是负数怎么办呢?。 这时虚拟机会先让n对32取模,变成一个绝对值小于32的负数,然后再加上32,直到 n 变成一个正数。比如(k>>>-1) ==> (k>>>31); (k>>-43) ==> (k>>-11) ==> (k>>>21)。

分享到:
评论
1 楼 小苹果把 2008-11-04  
位移操作是对整数而言,不单单是int吧,即byte,short,char,int,long

相关推荐

    JAVA工程师笔试题汇总(免费)

    知识点6:Java位移操作符 在Java中,有两种位移操作符:&gt;&gt;和&gt;&gt;&gt;. &gt;&gt;是带符号位移操作符,&gt;&gt;&gt;是无符号位移操作符。例如,1010 0000 0000 0000 0000 0000 0000 0000 &gt;&gt; 4将结果为0000 1010 0000 0000 0000 0000 0000 ...

    java byte相互转换详解左右位移

    在Java中,基本数据类型byte与int之间的相互转换涉及到计算机的二进制运算、位移操作以及补码的概念。我们首先了解Java中int和byte的数据结构,然后探讨它们之间的转换方法及其背后的原理。 **基本数据类型结构:**...

    Test_shr_long.rar_verify

    在IT行业中,尤其是在...总的来说,“Test_shr_long.rar_verify”可能是一个关于Java位移操作的测试案例,特别是关注无符号右移的正确性和边界条件。通过理解和掌握这些知识点,开发者能更好地写出高效且可靠的代码。

    10_02.rar_10_02_java 位移

    在Java中,位移操作符包括左移()、右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)。这个名为"10_02.rar_10_02_java 位移"的压缩包文件,很可能包含了一个Java项目,该项目运用了位移运算来实现特定的功能,这里特别提到了"中点...

    有限单元法求解跨中的位移java实现

    在Java中,这可能需要使用二维数组来表示矩阵,并编写相应的算法实现这些操作。 在“跨中的位移”这个问题中,可能指的是结构的中心位置的位移。在实际应用中,可能需要输入荷载分布、结构几何信息以及材料属性,...

    java modbusRTU协议实现平硐位移的报警和复位

    在本项目中,我们利用Java语言实现了ModbusRTU协议,以此来监控平硐(可能是矿山或其他类似结构)的位移情况,并进行报警与复位功能。 ModbusRTU是一种基于RS-485或RS-232串行通信的协议,它定义了设备如何在总线上...

    java位运算操作

    Java位运算操作 左位移 右位移 与或非的操作

    Java byte 位移操作 注意事项

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

    Java操作符的优先级和结合性

    6. 移位运算符:`、`&gt;&gt;`、`&gt;&gt;&gt;` —— 从左到右执行,用于位移操作,如 `a 。 7. 关系运算符:`、`、`&gt;`、`&gt;=`、`instanceof` —— 从左到右执行,用于比较操作,如 `a 。 8. 相等运算符:`==`、`!=` —— 从左到右...

    农行,笔试题,java,c

    9. Java 位移运算:&gt;&gt;&gt;运算符。 10. Java awt 包:用于 GUI 编程。 11. Java final 关键字:不可继承的类。 12. Java 系统输出:system.out.println()。 13. Java 面板默认布局:FlowLayout。 14. Java 类组成:属性...

    Java排列组合算法分析和代码实现

    在`Combination.java`文件中,你应该能看到这种位移法的实现,它通过维护一个组合数组,并在每次生成新组合时仅移动少数几位,以达到高效生成组合的目的。 文档`排列.doc`和`位移法实现组合.doc`将提供更详尽的解释...

    可互操作的Java和JavaScript AES/128/192/256加密算法代码

    本主题主要关注的是如何在Java和JavaScript之间实现可互操作的AES(Advanced Encryption Standard)加密算法,这涉及到128、192和256位的密钥长度。AES是一种广泛应用的块密码,以其高效性和安全性著称,广泛用于...

    动物位移小游戏Java实现,强行使用上了SQLite和MyBatis.zip

    本资源是一个基于Java实现的动物位移小游戏的完整项目,集成了SQLite数据库和MyBatis框架。该项目适合计算机相关专业的学生、教师以及企业员工学习和参考,也可作为毕业设计、课程设计或大作业的一部分。项目通过...

    Java byte数组与其他类型转换

    这两个方法内部都采用了位移操作来完成转换。例如,`putShort`方法通过右移8位将高字节存储到索引位置,然后将低字节存储到索引+1的位置。而`getShort`方法则通过左移位操作来重组字节并返回原始short值。`...

    crc16_java_CRC16_

    4. **多项式除法**:根据生成器多项式,对CRC寄存器进行逻辑与操作,若最高位为1,则进行位移操作并异或生成器多项式。 5. **返回CRC值**:最后得到的CRC寄存器值就是CRC16校验码。 ### CRC16.java关键代码分析 ...

    基于JAVA-gui的文本加解密小程序源码

    基于JAVA-gui的文本加解密小程序源码 本项目一共有四个类文件 第一个类文件是Mainpanel.java,实现主界面的绘制,用户输入或打开文本,显示执行结果,...第四个类文件是Encode.java,实现对文件的ASCii码位移加密操作。

    Java编写的CRC校验

    然后,我们需要对数据进行位移和异或操作,这些操作可以使用Java的位运算符完成。例如,`&gt;&gt;&gt;`用于无符号右移,`^`用于异或,`&`用于按位与。 以下是一个简单的CRC-32校验的Java实现步骤: 1. 初始化CRC寄存器,通常...

Global site tag (gtag.js) - Google Analytics