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

二进制的移位运算

阅读更多
java的移位运算有三种:左移<<,有符号右移>>,无符号右移>>>
 
对于左移<<,不管正负数,操作数右边的低位以0补齐,相当于乘以2的n次方,n为移动的位数。
比如1<<2,0000 0001位移两位的话,变为0000 0100,也就是4。
其实相当于1乘以2的2次方,得到结果为4,-1<<2类似,得到的结果为-4
 
但1<<32,可以想象二进制的移位,那个1移到了尽头,这时最低位不在补0,而是补1,从而得到的结果为1其自身
 
其实操作数移位的位数若超过本身类型占用位数,比如Int类型数据超过32位,那么移位的位数就相当于0,也就是移位的位数总是n%类型占用位数
大白话可能表达不清楚,咱们还是以例子说明
如int类型(占用位数为32位)的数字1,进行操作1<<33,其实相当于1<<33%32,也即1<<1,结果为2
 
对于有符号右移>>,如果是正数,在操作数左边的空位上补0,若是负数,就在左边的空位上补1
 
正数右移,其实相当于除以2的n次方,如4>>1,相当于4除以2,结果为2
负数右移,也类似整数,如-4>>1,相当于-4除以2,结果为-2
 
在移动位数超过操作数最大值之后,正数结果直接为0,负数结果为-1
如:2>>10和2>>12的结果都为0,-2>>10和-2>>12的结果都为-1
 
若超过操作数类型占用位数,那跟上面说的情况是一样的,移动位数还是n%类型占用的位数
 
对于无符号右移>>>,不管正负数,操作数在左边高位补0,情况类似以上。 
分享到:
评论

相关推荐

    Windows关于整数二进制位移运算的MFC程序源代码

    在编程领域,特别是C语言和其派生的MFC(Microsoft Foundation Classes)框架中,整数的二进制位移运算是一种重要的算术操作。位移运算符在处理位模式、数据存储、位掩码以及优化计算等方面发挥着关键作用。本程序源...

    C++ 二进制运算

    本文将深入探讨C++中的二进制运算,包括按位与、按位或、按位异或、按位取反以及移位运算等核心操作,并通过具体实例来阐述它们的工作原理及应用场景。 #### 按位与运算 (&) 按位与运算符`&`用于比较两个数的二...

    二进制位操作演示小工具

    二进制位操作是计算机科学中的基础概念,它在编程中扮演着至关重要的角色,特别是在低级别语言如C和C++以及嵌入式系统中。这个"二进制位操作演示小工具"是为了帮助用户直观地理解并实践这些操作而设计的。下面,我们...

    圣克鲁斯加利福尼亚大学的老师Eric Lengyel总结的二进制运算基础

    移位运算是指对二进制数进行移位操作,例如左移、右移等。这些运算可以用来实现各种数据处理操作,例如将二进制数左移一位、将二进制数右移一位等。 在Eric Lengyel老师的总结中,我们可以看到各种二进制运算的公式...

    C语言二进制位运算教学设计.pdf

    二进制位运算,包括与(AND)、或(OR)、异或(XOR)和移位(shift)等操作,对于数字信号的处理、硬件内存的读写等应用来说至关重要。 数据在计算机中的表示方式包括原码、反码和补码。原码是指用一个字节表示一...

    一种用于SRAM阵列的列移位多位乘法二进制分解运算的电路结构的制作方法.docx

    该文档介绍了一种创新的电路结构设计,应用于SRAM(静态随机访问存储器)阵列,主要用于执行列移位多位乘法的二进制分解运算。这种方法旨在解决传统冯诺伊曼架构中运算效率低、能耗高的问题,通过将运算与存储结合,...

    计算机组成原理实验二-移位运算实验.docx

    移位运算通常包括左移、右移和循环移位等类型,它们在计算机内部处理二进制数时起着重要作用。在本实验“计算机组成原理实验二-移位运算实验”中,我们将通过EL-JY-II型计算机组成原理实验系统来深入理解这些概念。 ...

    w.zip_二进制运算

    在IT领域,尤其是在计算机科学和编程中,二进制运算起着至关重要的作用。二进制,即由0和1组成的数字系统,是计算机内部处理数据的基础。在“w.zip_二进制运算”这个主题中,我们主要探讨的是长整数的表示以及在二...

    《有趣的二进制》附书源码

    2. 计算过程:CPU执行的所有指令都是基于二进制的,包括逻辑运算(如AND、OR、NOT)、移位操作和比较操作。 3. 网络传输:互联网上的数据传输也依赖于二进制。例如,TCP/IP协议栈中的数据包就是由0和1组成的比特流。...

    计算机组成带移位运算实验报告

    - 移位运算能显著改变二进制数据的表示,循环移位保留了进位信息,对于算术和逻辑操作具有重要作用。 - 时间复杂度分析显示,移位运算通常比其他算术运算更快,因为它们只需要简单的电路操作即可完成。 5. 问题与...

    二进制运算规则.doc

    总结,二进制的加、减、乘、除运算都可以转化为加法、减法和移位操作。 **2.4 数的定点与浮点表示** **2.4.1 定点表示法** 在定点表示法中,小数点的位置是固定的,可以约定在数值的某个确定位置。定点数分为定点...

    程序员二进制计算器 v1.36

    支持与、或、非、异或、移位(循环、逻辑、算术),直接读写二进制位,指定位段读、写、置1、清0、反转。 二进制数据表达方式多样,数据可以K、M、G等单位为后缀。 支持类C语言库函数调用。 结果可以各种进制、各种...

    负数移位运算讲解

    ### 负数移位运算详解 在计算机科学与编程领域中,移位运算是一个非常重要的概念。本文将深入探讨C语言中的负数移位运算,并通过具体的例子来解释其实现过程。移位运算包括左移(`)和右移(`&gt;&gt;`)两种类型。 ####...

    QT进制运算程序

    这对于计算机科学、电子工程和数据处理等领域的工作尤为重要,因为这些领域经常涉及到二进制和十六进制的使用。 在QT环境中,开发者通常使用Qt Designer来设计UI界面,然后通过QT的信号和槽机制将界面元素与后台...

    程序员二进制计算器 v1.37

    支持与、或、非、异或、移位(循环、逻辑、算术),直接读写二进制位,指定位段读、写、置1、清0、反转。 支持常用位运算、数学运算、关系运算、常用转换运算,以运算符或函数方式调用。 支持类C语言库函数调用。 运算...

    C语言二进制除法用左右移位来表示.txt

    在二进制运算中,左移和右移操作是非常重要的基础。左移操作(`)是指将二进制数的所有位向左移动指定的位数,而空出的位置用0填充;右移操作(`&gt;&gt;`)则是将二进制数的所有位向右移动指定的位数。这两种操作都可以...

    数字电路-四位二进制乘法器课程设计

    【四位二进制乘法器】是数字电路中一种重要的逻辑设计,主要用于实现二进制数的乘法运算。在本课程设计中,学生需要设计一个能够处理4位二进制数乘法的电路,这涉及到对时序逻辑电路的理解和应用。时序逻辑电路是一...

    单片机-多字节二进制码转压缩BCD码示例(修正内容)

    在二进制到BCD的转换过程中,通常需要对二进制数进行循环移位操作,并在适当的时候应用十进制调整指令(DAA),以保证转换后的BCD码的正确性。 知识点一:二进制与BCD码的转换 在二进制到BCD码的转换过程中,需要先...

    python实现整数的二进制循环移位

    以及&gt;&gt;运算符实现二进制的左移位以及右移位,然而并没有实现循环移位的运算符,暂时也找不到可以实现循环移位的函数,所以在本文中,主要介绍了如何使用字符的切片运算实现循环位移。 一、实现思路 1、利用字符串的...

Global site tag (gtag.js) - Google Analytics