`

Java 移位操作

    博客分类:
  • Java
阅读更多
移位操作要注意的问题是高(低)位是补0还是补1和对char, byte, short型的操作:
(1)<< : (left-shift), 最低位补0
(2)>> : (signed right-shift), 右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1,  是0则补0,也就是逻辑右移
(3)>>> : (unsigned right-shit),右移过程使用零扩展(zero extension),即最高位一律补0,也就是算术右移
(4) 移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进 行操作。
(5)移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,例如有一下代码片段:
<!---->public class ShiftTest
{
    
public static void main(String [] args)
    {
        
byte a;
        
byte b;
        
byte c;
        a 
= 127;
        b 
= 127;
        c 
= 127;
        a 
<<= 2;
        System.out.println(a);
        System.out.println(b 
<<= 2);
        System.out.println(c 
<< 2);
    }
}
    
运行结果是:
            -4
            -4
             508
这 说明了在操作a <<= 2 执行过程是这样的:先将 byte型的数 127变成int型,左移2位得到 508,然后把508赋给byte型变量a时只是简单地"折断"(truncate)得到数-4。编译时编译器不会提示你可能损失精度(实际上在本例中确 实是损失精度了),但是如果你把a <<= 2改成 a = a << 2;编译器就会提示可能损失精度了。
分享到:
评论

相关推荐

    java 移位操作符的使用

    Java中的移位操作符用于对二进制数进行左移()、右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)操作。 左移()操作符:将一个数的所有位向左移动指定的位数,右侧空出的位用0填充。 右移(&gt;&gt;)操作符:将一个数的所有位向右移动...

    java 移位运算符的资源

    Java 移位运算符是编程语言中用于处理二进制位的一种高效操作方式,它们能够对整数类型(byte, short, int, long)的值进行左移、右移和无符号右移操作。理解这些运算符对于优化代码和深入理解计算机底层工作原理至...

    JAVA基础之java的移位运算

    - 当对byte或short类型进行移位操作时,它们会被提升为int类型,因此移位结果可能超出原始类型的范围,需要额外处理。 - 左移可能会导致符号位丢失,尤其是对负数左移过多位时。 - 右移时,如果原始值为负数,符号位...

    Java移位运算符1

    在Java编程语言中,移位运算符是一种高效的方式来进行位操作,它们对于处理二进制数据和进行快速的乘法、除法等计算非常有用。本文将深入探讨Java中的三种移位运算符:左移运算符(),右移运算符(&gt;&gt;)以及无符号右...

    java实现大周期线性反馈移位寄存器

    线性反馈移位寄存器(Linear Feedback Shift Register,简称LFSR)是密码学、通信和计算机科学中的一种重要工具,它通过一系列线性函数操作来改变寄存器中的位序列,从而产生周期性的伪随机序列。这些序列在密码学中...

    java基于移位操作实现二进制处理的方法示例

    Java语言中的移位操作是处理二进制数据时非常高效且强大的工具,它涉及到计算机底层的位运算。本文将深入探讨如何使用Java的移位操作来处理二进制,并通过示例代码展示其实现方法。 首先,我们来看一下Java中的移位...

    java&lt;&lt;、&gt;&gt;、&gt;&gt;&gt;移位操作方法

    Java移位操作方法详解 Java中的移位操作方法主要有三种:左移位()、有符号右移位(&gt;&gt;)和无符号右移位(&gt;&gt;&gt;)。下面我们将详细介绍这三种移位操作方法的原理和应用。 一、左移位() 左移位操作将运算数的二...

    Java移位运算符详解实例(小结)

    Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(&gt;&gt;&gt;)和带符号的右移位运算符(&gt;&gt;)。这些运算符可以单独用来处理int型整数。 1. ...

    文件移位加密与解密

    程序的核心部分在于读取文件内容,然后根据用户输入的密钥进行移位操作,最后输出加密或解密后的结果。程序还包含了一个无限循环,允许用户多次进行加密或解密操作而无需重新启动程序。 #### 程序关键代码解析 ```...

    Java中的进制与移位运算符

    移位运算在处理位操作、数组索引计算、快速乘除等方面非常有用,但需谨慎使用,因为它们可能会导致数值溢出或丢失符号信息。 了解了这些基础知识后,开发者可以更好地理解和编写涉及二进制和移位运算的代码。在实际...

    Java三种移位运算符原理解析

    Java移位运算符是Java编程语言中的一种基本操作符,主要用于对二进制数的移位操作。Java中有三种移位运算符:左移运算符()、带符号右移运算符(&gt;&gt;)和无符号右移运算符(&gt;&gt;&gt;)。下面我们将详细介绍这三种移位...

    移位算法文件加密解密

    移位算法在信息安全领域是一种常见的加密技术,它基于字符或数据块的位移操作来实现信息的隐藏。这种算法简单易懂,但也因为其相对简单的性质,可能在安全性上不如其他高级加密标准如AES(高级加密标准)或RSA。本文...

    LFSR线形反馈移位寄存器

    LFSR通过移位操作和线性反馈功能,能够生成一系列看似随机的数据序列,这些序列在统计上具有良好的均匀性和不可预测性。 LFSR的基本工作原理是基于移位寄存器的。移位寄存器是一种存储设备,它包含若干个存储单元...

    java位运算符之左移操作视频

    1. 移位数量:左移操作符后的数字表示要移动的位数。如果这个数字大于32(对于32位整数),结果将取决于JVM的具体实现,通常会截断为32位。 2. 数据类型:左移操作可以应用于byte、short、int和long类型的数值。对于...

    浅析java移位符的具体使用

    在Java编程语言中,移位运算符是一种特殊且功能强大的工具,允许程序员以一种高效的方式操作二进制数据。本文将详细解析Java中移位运算符的具体使用方法,包括左移运算符()、右移运算符(&gt;&gt;)以及无符号右移运算符...

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

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

    数组循环移位操作实例

    在数据结构和算法的世界里,数组循环移位操作是一种基础而又十分重要的技巧。循环移位,也被称为数组旋转,是指把数组中的元素按照指定的步长,向左或者向右移动,从而使得原本的首尾元素互相交换位置,形成一个新的...

    Thinking in java4(中文高清版)-java的'圣经'

    3.5.1 一元加、减操作符 3.6 自动递增和递减 3.7 关系操作符 3.7.1 测试对象的等价性 3.8 逻辑操作符 3.8.1 短路 3.9 直接常量 3.9.1 指数记数法 3.10 按位操作符 3.11 移位操作符 3.12 三元操作符 if-else 3.13 ...

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

    在 Java 中,移位运算是指将一个数字移动到特定的位数,以便实现某些操作。在这里,我们使用移位运算来将 int 型分解成四个 byte 型。移位运算有三种类型:左移位()、右移位(&gt;&gt;)和无符号右移位(&gt;&gt;&gt;)。 知识点...

    CoreJava全套详细笔记资料.pdf

    * 运算符是Java语言中的基本操作符,用于执行各种操作。 * 移位运算符包括左移、右移和无符号右移,用于将数字移动到指定的位置。 * 位运算符包括按位与、按位或、按位异或和按位非,用于对数字进行二进制操作。 * ...

Global site tag (gtag.js) - Google Analytics