Java位运算之移位运算
文章目录
- 移位运算
- 左移 << 位运算符
- 右移 >> 位运算符
- 无符号右移 >>> 运算符
移位运算
移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。移位运算符有左移 <<,右移 >>,无符号右移 >>> 这几种。
左移 << 位运算符
运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
首先来看它在 Java 中的使用:
int a = 10;
System.out.print(a << 2);// 将变量a的二进制的值向左移动两位
执行结果:40
首先我们先将 a 的值转化为二进制的形式。
00000000000000000000000000001010 // a值的二进制
上面将变量 a 的二进制的值使用左移 << 位运算符向左移动两位,而根据它的使用规则可以看出,我们需要将最左边的两个数,也就是两个 0 给移除,后面的数字整体向左移两位,最右侧空出的两个位置用 0 补齐,那它的最后结果就应该是:
00000000000000000000000000001010 // a值的二进制
00000000000000000000000000101000 // 使用左移 << 位运算符向左移动两位后的二进制值
而 00000000000000000000000000101000 的十进制形式就是 40 。
右移 >> 位运算符
运算规则:按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补一。
首先来看它在 Java 中的使用:
int a = -3;
System.out.print(a >> 2);// 将变量a的二进制的值向右移动两位
执行结果:-1
正负整数在 Java 中以二进制补码形式表示,a 的值为 -3,所以 a 的二进制形式为:
11111111111111111111111111111101 // a值的二进制
注意:负数最高位取1,正数取0,关于补码的相关知识可自行了解,本课程不负责讲解。
上面将变量 a 的二进制的值使用右移 >> 位运算符向右移动两位,而根据它的使用规则可以看出,我们需要将最后两位的两个数,也就是 0 和 1 给移除,前面的数字整体向后退两位,前面空出的两个位置用符号位补齐,也就是如果这个数是正数,就补 0,负数的话就补 1,而这里 a 的值为负数,那它的最后结果就应该是:
11111111111111111111111111111101 // a值的二进制
11111111111111111111111111111111 // 使用右移 >> 位运算符向右移动两位后的二进制值
11111111111111111111111111111111 的十进制形式是 -1,故 -3 右移两位的结果是 -1。
无符号右移 >>> 运算符
运算规则:与右移 >> 位运算符的移动方向相同,区别是在移动后空出的高为上补 0,即不考虑被移动整数的正负情况,只使用 0 进行补位。
首先来看它在 Java 中的使用:
int a = -3;
System.out.print(a >>> 2);// 将变量a的二进制的值向右移动两位
执行结果:
1073741823
首先我们先将 a 的值转化为二进制的形式。
11111111111111111111111111111101 // a值的二进制
上面将变量 a 的二进制的值使用无符号右移 >>> 位运算符向右移动两位,而根据它的使用规则可以看出,我们需要将最后两位的两个数,也就是 0 和 1 给移除,前面的数字整体向后退两位,前面空出的两个位置用两个 0 补齐,那它的最后结果就应该是:
11111111111111111111111111111101 // a值的二进制
00111111111111111111111111111111 // 使用无符号右移 >>> 位运算符向右移动两位后的二进制值
而 00111111111111111111111111111111 的十进制形式就是 1073741823 。
Java位运算之移位运算相关推荐
- Java从入门到精通08-二进制、位运算、移位运算
Java从入门到精通08-二进制.位运算.移位运算 二进制(Binary)数用0和1两个数字及其组合来表示任何数.进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右到左 ...
- Java中的位运算符、移位运算
一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3) ...
- Java二进制位运算、移位运算、、
为什么80%的码农都做不了架构师?>>> Java二进制位运算.移位运算 思考题 1.请看下面的代码段,回答a,b,c,d,e结果是多少? public static void ...
- java 位与运算_java中位运算和移位运算详解
一.位运算 (1)按 位 与 & 如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0.首先我们看一下对正数的运算 分别看一下正数和负数的具体运算步骤 正数直接取二进 ...
- 【JAVA】什么是移位运算
移位运算 引言 1️⃣什么是移位运算 2️⃣用法 左移位运算 `<<` 替换乘法
- Java 位运算符和移位运算符
参考: Bitwise and Bit Shift Operators <Java 编程思想 第3章 操作符> 今天学习 Java BitSet 类时,发现对于位运算符和移位运算符的操作有 ...
- 计算机中逻辑移位示意图,定点数运算之移位运算(收藏)
一.移位运算 1.移位的意义 移位运算在日常生活中常见.例如15米可写作1500厘米,单就数字而言,1500相当于小数点左移了两位,并在小数点前面添了两个0:同样15也相当于1500相对于小数点右移了 ...
- Java位运算符和移位运算符详解
位运算符主要针对二进制,它包括了:"与"."非"."或"."异或". 移位运算符包括,"左移运算符" ...
- java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
public classDemo3 {public static voidmain(String[] args) { CycleLinkList cycleLinkList=newCycleLinkL ...
最新文章
- mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare(转)
- 思科交换机配置试题_(思科配置试题可以略过)
- restful规范和APIView
- 嵌套函数,匿名函数,高阶函数
- Java和pathion_Spring配置中的classpath:与classpath*:的区别
- div中文字,图片居中对齐,兼容FF、IE
- (44)FPGA面试题CMOS和TTL电路区别
- 自学python要看哪些书-想学习Python做数据分析,应该看哪些书?
- python提取列表中文本_Python正则表达式:从文本文件中提取关键字后的元组列表...
- HDFS API操作的访问方式及JUnit测试类的使用
- 一个非常经典的erp教程
- shell脚本中,for的用法
- java生成word排版_java生成word的几种方案(转)
- WPS国际版2019 中文
- Python数据分析学习系列 九 绘图和可视化
- GoLand/GO项目配置与使用
- 高斯金字塔和拉普拉斯金字塔实现图像融合
- 记一次在VMware中安装黑苹果的经历
- Navicat使用pgSQL报错不能建表
- k8s admission webhook初探
热门文章
- 在线压缩文档工具、迅捷压缩在线
- java将jfif格式转换成ipg_jfif是什么格式?Win10将图片JFIF格式转成JPG格式的方法
- Mysql导入数据库报 [ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB
- WPS的自动备份与恢复
- matlab costas c1 c2,costas.m 源代码在线查看 - 用matlab建立模型设计fpga 资源下载 虫虫电子下载站...
- 树莓派mysql安装失败- 解决方案
- 去掉Office 2007 正版增值加载项五角星
- php实现 阿里云视频合成 (音频+视频+图片)
- Allegro如何设置创建Pin Pair的快捷键操作指导
- shell for循环遍历数组