文章目录

  • 一、左移 <<
  • 二、右移
    • 1、有符号右移 >>
    • 2、无符号右移>>>
  • 三、补充

一、左移 <<

向左移动,高位丢弃,低位用0补齐
不溢出的情况下num<<1相当于num*2
例如

        int i = Integer.MIN_VALUE;System.out.println(Integer.toBinaryString(i));// 10000000000000000000000000000000System.out.println(Integer.toBinaryString(i << 1));// 0

二、右移

1、有符号右移 >>

向右移动,高位用符号位补齐,低位丢弃
不溢出的情况下num>>1相当于num/2

        int i = Integer.MIN_VALUE;System.out.println(Integer.toBinaryString(i));// 10000000000000000000000000000000System.out.println(Integer.toBinaryString(i >> 1));// 11000000000000000000000000000000

任何一个负数,如果一直右移下去,最终都会得到 -1

        System.out.println(Integer.toBinaryString(i >> 31)); //(i < 0)// 11111111111111111111111111111111(-1)

2、无符号右移>>>

向右移动,高位用0补齐,低位丢弃

        int i = -3;System.out.println(Integer.toBinaryString(i));// 11111111111111111111111111111101System.out.println(Integer.toBinaryString(i >>> 1));// 1111111111111111111111111111110(第一位的0没有显示)System.out.println(i >>> 1);// 2147483646

任何一个数,如果一直无符号右移下去,最终都会得到0

        System.out.println(i >>> 31 >>> 1);

三、补充

当移位的位数大于或等于数据类型的表示位数时,会先对移位的位数取模
举个例子:对于int,其表示位数时32位,如果我们要对一个int型的整数num做移位操作,
移动位数为33,那么,计算时会先将33对32取模得到1,然后对num进行1位的移位操作。
如果移动位数是32,那么,不做操作
这也是我上面最后一行代码对i的移位分两次

System.out.println(i >>> 31 >>> 1)System.out.println(i >>> 32)的结果是不一样的

java中的移位操作相关推荐

  1. Java中的移位操作——Java编程思想笔记

    欢迎转载,转载请务必注明出处: http://blog.csdn.net/alading2009/article/details/39968281 Java中的移位操作包括 <<(无符号左 ...

  2. Java中的移位操作以及基本数据类型转换成字节数组【收集】

    AVA中位运算符包括: & | ~ ^ << >> >>> 一. 首先要搞清楚参与运算的数的位数: ( 联想:java的8种基本类型:byte,sho ...

  3. java中的移位操作详解

    移位运算,这是一个陌生又熟悉的操作.陌生是指不易理解且不常用,熟悉是指"别人家的开发工程师"在代码中经常使用这种方式进行高低位的截取.哈希计算.乘除法的运算,今天,让我们一起来揭开 ...

  4. Java中移位操作运算符的理解

    java中的移位运算符有三种: 1. <<: 左移 2. >>: 右移 3. >>>: 无符号右移 使用方法:左移就是将左边的操作数在内存中的二进制数据左移指 ...

  5. Java中String和byte[]间的转换浅析

    Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实 ...

  6. Java中性能优化的35种方法汇总

    原文地址:http://www.jb51.net/article/102831.htm 前言 对程序员们来说,代码优化是一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于 ...

  7. 在java中补零的作用是什么_浅谈Java中的补零扩展和补符号位扩展

    今天,魏屌出了一道题,题目如下: 定义一个大头序的byte[]a={-1,-2,-3,-4},转换成short[]b.问b[0]和b[1]分别是多少? 乍一看,这题不难,无非就是移位操作,再进行组合. ...

  8. Java中的Collection集合以及Collection集合实现类实例

    Collection集合 集合概述 集合的体系特点 Collection集合常用API Collection集合的遍历方式 方式一:迭代器 方式二:foreach/增强for循环 方式三:lambda ...

  9. Java中实现十进制数转换为二进制的几种办法

    Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...

  10. Java中实现十进制数转换为二进制

    Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2-依次循环,直到商为0结束,把余数倒着依 ...

最新文章

  1. web个人主页制作代码_关于嵌入式web服务器
  2. 【运维】阿里云宝塔面板部署JavaWeb项目
  3. 图像均值迁移模糊:pyrMeanShiftFiltering()
  4. MD5算法了解(JAVA实现)
  5. 三、oracle 用户管理一
  6. PMCAFF微课堂 | 京东核心团队揭秘:业务增长10倍背后的敏捷开发秘籍
  7. 小程序picker标题_微信小程序-自定义picker选择器
  8. User-mode Linux (简体中文)
  9. android 内存检测框架,Android项目内存泄漏检测
  10. [Python] L1-021. 重要的话说三遍-PAT团体程序设计天梯赛GPLT
  11. time.c 的Java实现(从timestamp计算年月日时分秒等数值)
  12. Javascript:基础语法
  13. aruba交换机配置命令_aruba配置手册
  14. 计算机内部组成原理及内部子系统概述
  15. 游戏3D建模入门,有哪些建模软件可以选择?
  16. 取消开机CHKDSK磁盘检查
  17. 常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源
  18. 中秋佳节,实现一个自定义任意路径嫦娥奔月程序:过什么节,代码走起
  19. 计算机技术身边的应用案例,计算机数据存储应用案例分析
  20. 粒子特效遮罩 UGUI SpriteMask

热门文章

  1. maven下载与安装教程
  2. live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码
  3. 比特大陆招股书讲了个AI的故事,但资本市场愿意听吗?
  4. vgg16的网络结构
  5. 阿里腾讯华为在行动!程序员远程办公究竟用哪个视频会议好?
  6. go编译成linux可执行,Golang 编译Mac、Linux、Windows多平台可执行程序
  7. 防病毒网关、防火墙与防病毒软件功能及部署对比
  8. matlab人口增长模型拟合,matlab曲线拟合人口增长模型及其数量预测
  9. linux 安装pinphp遇到的“系统不支持curl!”问题
  10. 偷窥JCache API(JSR 107)