移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
在移位运算时,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中的移位运算之前,我们先来了解一下基本的数据类型及其范围。 ##### 1. 基本类型取值范围 Java中提供了多种基本数据类型,如`byte`、`...
Java的移位运算涉及到整数类型数据的二进制位操作,这对于理解计算机底层运作和优化代码至关重要。移位运算主要包括左移运算符()和右移运算符(>>,>>>)。在Java中,所有的整数类型(除了char类型外)都是有符号...
而Java.jpg可能是一个与课程或教程相关的图片,展示了一些移位运算的例子或图解,帮助学习者更好地理解这一概念。 总的来说,Java的移位运算符是编程中不可或缺的工具,它们提供了对二进制位的直接控制,能够实现...
"Java利用移位运算将int型分解成四个byte型的方法" 以下是 Java 中利用移位运算将 int 型分解成四个 byte 型的方法相关知识点: 知识点 1:移位运算 在 Java 中,移位运算是指将一个数字移动到特定的位数,以便...
本资料主要讲解了Java中的运算符,特别是移位运算和逻辑运算,这两部分是理解数据处理和程序控制的关键。 首先,我们来探讨移位运算。Java支持三种类型的移位运算:左移(),右移(>>)和无符号右移(>>>)。左...
4. **byte和char进行移位运算**:当`byte`和`char`进行移位运算时不会发生错误,并且均按照整型进行计算,当计算结果超出`byte`或是`char`所能表示的范围时则进行相应的转换。 - 示例: ```java public class ...
### Java中的位运算知识点 #### 一、位运算概述 位运算是计算机科学中的一个基本概念,它直接针对二进制位进行操作。在Java语言中,提供了多种位运算符来处理二进制数据,这对于优化算法性能、提高程序效率等方面...
示例代码中展示了一些位运算的应用,比如通过位运算符来操作变量的二进制位,演示了逻辑运算符和移位运算符的使用。其中,通过位运算符演示了如何实现加法操作,因为通过位运算可以模拟进位逻辑,进而实现加法。 ...
Java 位运算是编程语言中的一种底层操作,它允许我们直接对整数类型的数据进行按位操作,包括按位与(&)、按位或(|)、按位异或(^)、按位非(~)以及左移()、右移(>>)和无符号右移>>>。这些操作在处理二进制数据、优化...
- `左移位运算,向左移动指定位数,高位补0。 - `>>`:有符号右移位,向右移动指定位数,根据符号位填充0或1。 - `>>>`:无符号右移位,向右移动指定位数,无论符号,高位均填充0。 3. **示例代码分析** - `...
Java移位运算符详解实例 Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(>>>)和带符号的右移位运算符(>>)。这些运算符可以单独...
它首先从`start`字符串中提取出位0、4、10和13,然后通过异或(^)运算生成新的位13(`x13`)。这个异或操作相当于执行了LFSR的线性反馈函数。接着,`start_buffer`用于更新寄存器状态,移除最左边的一位并添加新...
在Java编程语言中,位运算和逻辑运算都用于处理布尔值和整数,但它们在实际操作和行为上有着显著的差异。理解这些差异对于优化代码和深入理解计算机底层工作原理至关重要。 首先,我们来看看逻辑运算符。逻辑运算符...
Java中的位运算符和移位运算在编程中有着重要的作用,尤其在处理底层数据和优化代码性能时。这里我们将深入探讨这些概念。 首先,我们来看位运算符。Java提供了四种基本的位运算符: 1. **按位与(&)**:这个...
从给定的文件信息来看,本文档主要涉及的是文件移位加密与解密技术的C语言实现,这是一项基础但非常实用的加密方法,尤其在早期计算机科学领域中占有重要地位。下面,我们将深入探讨这一主题,包括其背景、原理、...
本文主要介绍了 Java 中幂指数值的运算代码解析,提供了多种解决方案,涵盖了幂指数值的基本概念、Math.pow 函数的使用、移位运算的应用等方面。 一、幂指数值的概念 在数学中,幂指数值是指一个数的指数次方,如 ...
移位运算在处理位操作、数组索引计算、快速乘除等方面非常有用,但需谨慎使用,因为它们可能会导致数值溢出或丢失符号信息。 了解了这些基础知识后,开发者可以更好地理解和编写涉及二进制和移位运算的代码。在实际...