`
jjhpeopl
  • 浏览: 108805 次
  • 性别: 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应用程序,界面中标志表示左移或者右移,移位数输入要移的位数,还有输入整数,和输出结果,按钮是用来操作,很方便用来测试

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

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

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

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

    QT进制运算程序

    QT5.9.7编写的UI程序工程,解压后即可用QT打开。可以实现数量与单价的输入与计算,以及二进制、十六进制、十进制数字的相互转换。

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

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

    二进制图文详解

    二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2...

    高精度长整数运算库 长整数除法 与 取模运算 效率 与 乘法相当

    长整数的四则运算, ...除法运算中没有用到减法与乘法,只有加法和二进制移位运算 资源中包含: bignum.h bignum.lib bignum.dll 以及一个测试的函数: test.cpp 测试时,连接所提供的动态链接库!!

    八位二进制乘法器.zip

    用移位相加的方法设计一个8位二进制串行乘法器。基于EP4CE1022C8芯片,于Quartus Ⅱ 13.1中实现。包含仿真文件,上板子验证成功。此为西电EDA课设大作业,实验报告见博客,仅供参考。

    BURmoon#CPP_notes#[位运算]二进制中1的个数1

    题目输入一个整数,输出该数32位二进制表示中1的个数(其中负数用补码表示)示例输入输出题解二进制移位法//将 mark0x01 和 n 进行 ‘&’ 运算//

    _10基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计_000010.zip

    基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计,主要涉及数据结构相关的知识。详细介绍见文章:...

    位运算符总结

    位运算符:位指的是二进制位 移位运算符:属于位运算符,位指的是二进制位 包含详细说明及示例

    JAVA基础之java的移位运算

    所有的整数类型以二进制数字位的变化及其宽度来表示。例如,byte 型值42的二进制代码是00101010 ,其中每个位置在此代表2的次方,在最右边的位以20开始。向左下一个位置将是21,或2,依次向左是22,或4,然后是8,16...

    二进制计算器 BinCalc

    逻辑计算 支持16、8、10、2进制输入 支持移位操作 支持位运算 小数显示 字符和汉字编码查询 BIG5码和GB2312码转换

    Java移位运算

    主要讲述Java中移位运算,包括:基本数据类型范围、二进制的概念,移位运算符,基本数据类型与二进制之间的转换等。

    循环左移位运算

    本程序使用与初级接触C编程人员,可使用与二进制输出处理——循环左移位运算,亲笔操刀。

    剑指offer面试题15. 二进制中1的个数(位运算)

    题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。...时间复杂度 O(log_2 n):此算法循环内部仅有 移位、与、加 等基本运算,占用 O(1)O(1) ;逐位判断需循环 log_2 n次,其中 log_2 n代表数

    数据传送指令与算术逻辑运算和移位指令的使用

    一。 把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从... 二 使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算

    计算机体系与结构 16位ALU设计 实现对应的加减、逻辑运算、移位、比较等功能 计算机体系与结构课设 课程设计

    ALU需要实现对应的加减、逻辑运算、移位、比较等功能并采用仿真软件设计和对软件进行调试。 1.2 总体设计 1.2.1 总体设计原理 ALU是一种功能较强的组合逻辑电路,它能进行多种算术运算和逻辑运算。ALU给出运算结果的...

    密码算法中的循环移位“异或”运算实质性研究

    针对移位和“异或”运算的复合运算进行了研究,指出了m位二进制数的循环移位“异或”变换和移位“异或”变换等同于GF(2)上的多项式乘法问题,并给出了这种变换的可逆性判断的充分必要条件。

    数据结构定点数据运算.pdf

    计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n 位左移或右移时,其实质就便该数乘以或除以 2n(n=1,2...n)。 移位运算又叫移位操作, 对计算机来说, 有很大的实用价值, 例如, 当...

Global site tag (gtag.js) - Google Analytics