`

java的移位操作详解,左移和右移 << >>, 补码计算

    博客分类:
  • Java
 
阅读更多

 

---------------------补码----------------------------

 

正数的补码 是 正数 本身。

 

负数的补码:eg -9的补码: 9的源码为00001001,如果是负数的话,补码为最高位置1 ,其余取反也就是11110110,然后在最低位加1即可即11110111

 

--------------有符号 位移操作------------------------

 

左移位:<<,有符号的移位操作
左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充


右移位:>>,有符号的移位操作
右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。

例子:

public static void main(String[] args)
{

System.out.println(3<<2);//3左移2位
System.out.println(-3<<2);//-3左移2位

System.out.println(6>>2);//6右移2位
System.out.println(-6>>2);//-6右移2位

}

输出结果

12
-12
1
-2

 

00000000 00000000 00000000 00000011 +3在计算机中表示
00000000 00000000 00000000 0000001100 左移2位,补0,结果为12

----------------------------------------------------------------------------------------------

    00000000 00000000 00000000 00000011 +3在计算机中表示
11111111 11111111 11111111 11111100
11111111 11111111 11111111 11111101 -3在计算机中表示
11111111 11111111 11111111 1111110100 左移2位,补0,结果为负数,就是补码了,求原码
10000000 00000000 00000000 00001011
10000000 00000000 00000000 00001100 结果-12

-----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在计算机中表示方法
0000000000 00000000 00000000 00000110 右移两位,正数补0,结果为1
----------------------------------------------------------------------------------------------

   00000000 00000000 00000000 00000110 +6在计算机中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在计算机中的表示
1111111111 11111111 11111111 11111010 右移两位,结果为负数
1000000000 00000000 00000000 000001
1000000000 00000000 00000000 000010 结果为-2

 

 

 --------------无符号 位移操作------------------------

 

因为左移的时候,没有所谓 有符号 无符号,反正都是在最右边加0,所以就没有 <<< 这个东东

 

右移的时候,有符号 无符号 处理的方式不同,所以 才有 无符号 右移这种东东 >>> .

 

 

 

 

分享到:
评论

相关推荐

    c语言左移和右移的示例详解

    C语言中的左移和右移操作符是编程中常见的位操作,它们允许程序员对整数类型的数据进行位级别的处理。本文将深入探讨这两种操作符的工作原理,并通过示例进行详细解释。 左移操作符(&lt;&lt;)将一个数的二进制表示向左...

    负数移位运算讲解

    移位运算包括左移(`&lt;&lt;`)和右移(`&gt;&gt;`)两种类型。 #### 移位运算基础 移位运算是一种位操作,可以对整数进行快速乘除运算。在C语言中,左移和右移运算分别由符号“&lt;&lt;”和“&gt;&gt;”表示。 - **左移运算符(`&lt;&lt;`)**...

    Java位运算知识点详解

    移位运算有&lt;&lt;、&gt;&gt;、&gt;&gt;&gt;三种运算符,分别表示左移、右移、无符号右移。 2.1 与运算(&) 与运算的规则是:转为二进制后,两位都为1,则结果为1,否则结果为0。例如: 十进制 10 的二进制表示为 ...

    C语言基础-操作符详解

    左移操作符(&lt;&lt;)将二进制位向左移动,右移操作符(&gt;&gt;)将二进制位向右移动。 * &lt;&lt;(左移):将二进制位向左移动指定的位数 * &gt;&gt;(右移):将二进制位向右移动指定的位数 在右移操作符中,如果操作数是负数,则会...

    负数称位运算讲解

    移位运算包括左移(`&lt;&lt;`)和右移(`&gt;&gt;`)两种类型。 #### 移位运算基础 移位运算是一种位操作,可以对整数进行快速乘除运算。在C语言中,左移运算符`&lt;&lt;`和右移运算符`&gt;&gt;`用于实现这一功能。对于正数而言,移位运算...

    C语言运算符速查表

    5. 移位 `&lt;&lt;` `&gt;&gt;` 6. 关系 `&lt;` `&lt;=` `&gt;` `&gt;=` 7. 相等 `==` `!=` 8. 位与 `&` 9. 位异或 `^` 10. 位或 `|` 11. 逻辑与 `&&` 12. 逻辑或 `||` 13. 条件 `?:` 14. 赋值 `=` `+=` `-=` `*=` `/=` `%=` `&lt;&lt;=` `&gt;&gt;=` `&=...

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

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

    core java 小结

    符号扩展和无符号扩展也是理解补码的关键,而移位操作如右移(`&gt;&gt;`)、左移(`&lt;&lt;`)和逻辑右移(`&gt;&gt;&gt;`)则用于改变数值。 #### 六、BMP文件格式 BMP文件的头2-5字节存储着图像文件的大小,这对于解析和处理BMP图像至关...

    ACM位运算技巧

    - **右移(&gt;&gt;)与无符号右移(&gt;&gt;&gt;)**:`&gt;&gt;`右移时,对于正数,左边移出的空位补0;对于负数,空位可能补0或补1,具体取决于计算机系统的符号扩展方式。`&gt;&gt;&gt;`右移时,无论正负,左边移出的空位一律补0。 #### 补码运算...

    详解Java的位操作符

    这些操作符在处理内存效率、数据存储和计算时特别有用。本文将深入讲解Java中的位操作符,包括与(&)、或(|)、异或(^)、非(~)以及移位操作符。 首先,让我们来看看位操作符。Java提供了四种基本的位操作符: 1. **...

    《计算机组成与系统结构》编程实验

    - 左移2位和右移2位操作分别相当于扩大和缩小几倍? #### 实验六:整数和浮点数的算术运算 **实验目的**: - 通过检查高级语言中数据运算的不同结果,深入理解机器代码在CPU中的执行过程。 通过这一系列的实验,...

    基于as3的位运算详解

    例如,要创建24位颜色,我们可以执行`r &lt;&lt; 16 | g &lt;&lt; 8 | b`,对于32位颜色,则是`a &lt;&lt; 24 | r &lt;&lt; 16 | g &lt;&lt; 8 | b`。 异或运算(^)可以用于交换两个整数而无需临时变量。如`a ^= b; b ^= a; a ^= b;`这一技巧,...

    2016数据库系统工程师试题详解

    算术移位指令,例如算术左移和算术右移,在移位操作时会考虑符号位,保证了算术运算的正确性。 总线技术涉及数据传输的方式,分为并行和串行两种。并行总线由于同时传输多位数据,适合短距离高速通信,但成本较高;...

    计算机组成复习题,计算机组成个人总结

    在补码表示中,右移时,符号位不变,数值位向右移位,左边填充符号位;左移时,符号位不变,数值位向左移位,右边填充0(对于正数)或1(对于负数)。如果保持符号位不变,则称为算术移位。 5. 双符号位补码运算:...

    山东大学计算机组成原理整机实验

    - **移位寄存器**:移位寄存器是一种特殊的寄存器,它能够实现数据位的左移或右移操作。这对于位操作非常有用。 - **补码转换器**:在计算机科学中,补码是表示有符号整数的一种方式。补码转换器用于将数字转换成其...

    三菱plc常用的指令详解.doc

    循环和移位指令用于处理数据的移位和循环操作,对于实现数据流的控制非常重要。 - **ROR (循环右移)**:将数据向右循环移位。 - **ROL (循环左移)**:将数据向左循环移位。 - **RCR (带进位循环右移)**:带进位标志...

    2022年上半年数据库系统工程师答案详解借鉴.pdf

    4. **移位指令** 在计算机中,算术左移相当于乘以2,逻辑右移则仅移位而不考虑数值的符号。 5. **内存容量计算** 计算存储区域的容量需要了解起始地址和结束地址,然后根据字节编址计算存储单元的数量。 6. **总线...

    汇编语言详解

    - 指令通常包括操作码和操作数两部分。 - **7.3 基本指令** - 包括数据传送指令(如MOV)、算术逻辑指令(如ADD、SUB、AND)、移位指令(如SHL、SHR)等。 - **7.4 指令集** - 指令集是CPU所能执行的所有指令的...

    MD5编码算法

    3. **RotateLeft(lValue,iShiftBits)**:循环左移操作,结合了左移和右移操作,实现了循环位移。 - 先进行左移,然后将未移动的部分通过右移补充回来。 4. **AddUnsigned(lX,lY)**:无符号加法操作,处理两个32位...

    计算机组成原理实习论文

    - **循环移位**(01):左移时高位填之前低位的值,右移时低位填之前高位的值。 - **乘除法联合移位、上商**(10):特定于乘除法操作。 - **算术移位、补码乘法**(11):根据运算需求选择移位方向。 #### 三、...

Global site tag (gtag.js) - Google Analytics