Java 移位操作符
如有理解错误的地方,希望大家能够指正。
移位操作符在以前的开发中并没有使用过,估计在日常的开发中也很少会用到,所以记录下来,以后需要的时候方便查阅。
基本概念
Java里面的移位操作符总共有以下三种:
- 左移操作符 <<
- (有符号)右移操作符 >>
- (无符号)右移操作符 >>>
左移操作符(<<)的作用是按照符号右边指定的位数将符号左边的被操作数向左移,低位补零。
有符号右移操作符(>>)的作用是按照符号右边指定的位数将符号左边的操作数向右移。若符号为正,则在最高位插入0,若符号为负则在最高位插入1.
无符号右移操作符(>>>)则无论正负,都在最高为插入0.
实验验证
左移操作符代码.1
public static void main(String[] args) {int a = 1;for(int i=0;i<5;i++){System.out.println(Integer.toBinaryString(a<<i));}}
结果
左移操作符代码.2
public static void main(String[] args) {int a = 1;for(int i=29;i<34;i++){System.out.println(Integer.toBinaryString(a<<i));System.out.println(a<<i);}}
结果
可以看出,左移操作符就是简单的将操作符向左移,低位补零,直至最高为变成负数,然后又继续循环移至第一位。
右移操作符代码.1
public static void main(String[] args) {int a = 1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>i));System.out.println(a>>i);}}
结果
右移操作符代码.2
public static void main(String[] args) {int a = -1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>i));System.out.println(a>>i);}}
结果
可以看出,有符号右移操作符操作负数时在高位补一。
无符号右移操作符代码
public static void main(String[] args) {int a = -1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>>i));System.out.println(a>>>i);}}
结果
可以看出,由于无符号右移操作符无论正负都在高位插入零,所以负数一旦被操作,最高为位即变为零,即变为正数。
tips
1、当对byte、short、char类型进行移位操作时,将被转换成int类型。 2、当对long类型进行移位操作时,结果还是long。 3、移位操作符可与赋值操作符(=)组合使用(<<=或>>>=等)。 4、当对byte、short等进行<<=或>>=等操作时,可能会出现问题,因为byte等类型先被转换成了int类型再赋值给原来的类型,赋值时会被截断。
Java 移位操作符相关推荐
- java移位操作符注意的问题
如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,他们会被转为int类型, 并且所得到的结果也是一个int型. 若对long类型的数值进行处理所得到的结果也是long. ...
- 一元操作符、强制类型转换表达式、乘除操作符、加法操作符、移位操作符、关系操作符、判等操作符、位操作符与逻辑操作符、条件与操作符、条件或操作符--运算机制与返回值
操作符处理及返回值 先遣提示 一元操作符 前缀递增操作符 ++ 前缀递增操作符 - - 一元加号操作符 + 关于一元数值提升或二元数值提升 可以看这篇博客 一元减号操作符 - 这里涉及了 原码,反码, ...
- 【C语言】算数操作符 移位操作符 以及 sizeof单目操作符讲解
目录 1.算术操作符 2. 移位操作符 2.1 左移操作符 2.2 右移操作符 3.sizeof 单目操作符介绍 操作符介绍: C语言操作符分为: 算术操作符 移位操作符 位操作符 赋值操作符 单目操 ...
- Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理
文章目录 前言 一.操作符介绍与优先级表 二.一元运算符与二元运算符的区别? 三.Java 中唯一的三元操作符 四.逻辑操作符中的德模佛定理 总结 前言 在 Java 中我们常见的操作符分为三种,分别 ...
- 不懂异或?一文详解移位操作符,位操作符
一.移位操作符 << >> 在介绍移位操作符前先学习一下二进制的表示方法,二进制表示方法有3种: 原码,反码,补码 正数原码,反码,补码相同 负数原码,反码,补码需要计算 ...
- C不会断句?【前后置,位,移位操作符详解】 b = ++c, c++, ++a, a++
介绍:首先明确基础知识 b=a++ 把a赋给b 然后a+1 c=--a 先a-1 然后把结果赋给a和c 逗号表达式的优先级较低,从左往右算 整数的原反补相同 内存中存储的都是二进 ...
- 算数操作符与移位操作符
目录 一.算数操作符 二.移位操作符 一.算数操作符 算术操作符有:+ - * / % 1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数. 2. 对于 / 操作符如果两个操作数都 ...
- java移位运算符详解
java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移 ...
- Java移位运算符不外乎就这三种
Java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移) 1. 左移运算符 左移运算符<<使指定值的所有位都左移规 ...
- 第三节:带你详解Java的操作符,控制流程以及数组
前言 大家好,我是 Vic,今天给大家带来带你详解Java的操作符,控制流程以及数组的概述,希望你们喜欢 操作符 算数操作符 一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符. ...
最新文章
- 配置文件application.properties剥离
- 做一个完整的Java Web项目太难了,因为这些你不会!
- 医学图像处理期末复习(四)
- sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效...
- c++使用单向链表存储一组有序数据_数据结构笔试题基础
- springboot连接数据库报错testWhileIdle is true, validationQuery not set
- 自己封装的Windows7 64位旗舰版,微软官网上下载的Windows7原版镜像制作,绝对纯净版...
- Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
- 克鲁斯卡尔重构树小结
- VB入门在线视频教程大全学习
- 一起学爬虫(Python) — 19 年轻人,进来学自动化
- Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To
- 解决“无法启动此程序,因为计算机中丢失VCRUNTIME140.dll,尝试重新安装此程序以解决此问题”方案合集
- 等保合规2022系列 | 一个中心+三重防护,助力企业等级保护建设更科学
- 力扣 2303. 计算应缴税款总额
- 5/17/2015 今週日本語勉強の纏め
- 服务器重装系统用友u6,64系统装U6我用win7 64位旗舰版的系统,安装用
- 计算机培训普通话是什么,普通话培训(计算机辅助普通话测试介绍).ppt
- 2.基于Spring-Boot的代码规范实例
- 世界上第一台计算机内存容量,29、世界上第一台电子计算机ENIAC诞生于.doc