如有理解错误的地方,希望大家能够指正。

移位操作符在以前的开发中并没有使用过,估计在日常的开发中也很少会用到,所以记录下来,以后需要的时候方便查阅。


基本概念

Java里面的移位操作符总共有以下三种:

  1. 左移操作符 <<
  2. (有符号)右移操作符 >>
  3. (无符号)右移操作符 >>>

左移操作符(<<)的作用是按照符号右边指定的位数将符号左边的被操作数向左移,低位补零。
有符号右移操作符(>>)的作用是按照符号右边指定的位数将符号左边的操作数向右移。若符号为正,则在最高位插入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 移位操作符相关推荐

  1. java移位操作符注意的问题

    如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,他们会被转为int类型, 并且所得到的结果也是一个int型. 若对long类型的数值进行处理所得到的结果也是long. ...

  2. 一元操作符、强制类型转换表达式、乘除操作符、加法操作符、移位操作符、关系操作符、判等操作符、位操作符与逻辑操作符、条件与操作符、条件或操作符--运算机制与返回值

    操作符处理及返回值 先遣提示 一元操作符 前缀递增操作符 ++ 前缀递增操作符 - - 一元加号操作符 + 关于一元数值提升或二元数值提升 可以看这篇博客 一元减号操作符 - 这里涉及了 原码,反码, ...

  3. 【C语言】算数操作符 移位操作符 以及 sizeof单目操作符讲解

    目录 1.算术操作符 2. 移位操作符 2.1 左移操作符 2.2 右移操作符 3.sizeof 单目操作符介绍 操作符介绍: C语言操作符分为: 算术操作符 移位操作符 位操作符 赋值操作符 单目操 ...

  4. Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理

    文章目录 前言 一.操作符介绍与优先级表 二.一元运算符与二元运算符的区别? 三.Java 中唯一的三元操作符 四.逻辑操作符中的德模佛定理 总结 前言 在 Java 中我们常见的操作符分为三种,分别 ...

  5. 不懂异或?一文详解移位操作符,位操作符

    一.移位操作符 <<   >> 在介绍移位操作符前先学习一下二进制的表示方法,二进制表示方法有3种: 原码,反码,补码 正数原码,反码,补码相同 负数原码,反码,补码需要计算 ...

  6. C不会断句?【前后置,位,移位操作符详解】 b = ++c, c++, ++a, a++

    介绍:首先明确基础知识 b=a++   把a赋给b  然后a+1 c=--a     先a-1     然后把结果赋给a和c 逗号表达式的优先级较低,从左往右算 整数的原反补相同 内存中存储的都是二进 ...

  7. 算数操作符与移位操作符

    目录 一.算数操作符 二.移位操作符 一.算数操作符 算术操作符有:+ - * /   % 1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数. 2. 对于 / 操作符如果两个操作数都 ...

  8. java移位运算符详解

    java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移 ...

  9. Java移位运算符不外乎就这三种

    Java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移) 1. 左移运算符 左移运算符<<使指定值的所有位都左移规 ...

  10. 第三节:带你详解Java的操作符,控制流程以及数组

    前言 大家好,我是 Vic,今天给大家带来带你详解Java的操作符,控制流程以及数组的概述,希望你们喜欢 操作符 算数操作符 一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符. ...

最新文章

  1. 配置文件application.properties剥离
  2. 做一个完整的Java Web项目太难了,因为这些你不会!
  3. 医学图像处理期末复习(四)
  4. sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效...
  5. c++使用单向链表存储一组有序数据_数据结构笔试题基础
  6. springboot连接数据库报错testWhileIdle is true, validationQuery not set
  7. 自己封装的Windows7 64位旗舰版,微软官网上下载的Windows7原版镜像制作,绝对纯净版...
  8. Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
  9. 克鲁斯卡尔重构树小结
  10. VB入门在线视频教程大全学习
  11. 一起学爬虫(Python) — 19 年轻人,进来学自动化
  12. Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To
  13. 解决“无法启动此程序,因为计算机中丢失VCRUNTIME140.dll,尝试重新安装此程序以解决此问题”方案合集
  14. 等保合规2022系列 | 一个中心+三重防护,助力企业等级保护建设更科学
  15. 力扣 2303. 计算应缴税款总额
  16. 5/17/2015 今週日本語勉強の纏め
  17. 服务器重装系统用友u6,64系统装U6我用win7 64位旗舰版的系统,安装用
  18. 计算机培训普通话是什么,普通话培训(计算机辅助普通话测试介绍).ppt
  19. 2.基于Spring-Boot的代码规范实例
  20. 世界上第一台计算机内存容量,29、世界上第一台电子计算机ENIAC诞生于.doc

热门文章

  1. oracle11g rman实例,oracle11g rman备份与恢复详细实例
  2. 初识C语言,入门小程序
  3. jeecg框架中时间控件时分秒的显示
  4. 全网最全AE中英文界面对照表分享
  5. python模拟键盘操作_Python 模拟键盘鼠标操作详细教程
  6. BCH编译码的matlab性能分析
  7. 基于最小二乘法的人口增长模型拟合
  8. 数学建模系列-优化模型(三)---排队论模型
  9. mysql 初始化序列_GitHub - IMAUZS/seq: 基于mysql的序列号生成器
  10. 数据库系统的三级模式结构