一 描述

<

>>:右移运算符(算术右移),如果数字为正数时,移位后在前面补0,为负数时,则在前面补1;

>>>:无符号右移运算符(逻辑右移),忽略符号,空位补0即可。

二 Demo分析

/**

* @Program:

* @Description: Java移位运算符Demo

* @Author: heykin

* @Create: 2019-01-05 14:29

* @Since: 1.0

**/

public class Test {

public static void main(String[] args) {

/** 正数演示 **/

System.out.println("-----------------正数演示-----------------");

int num = 7;

System.out.println("原值(十进制):" + num + ";原值(二进制)" + Integer.toBinaryString(num));

int tmp = num >> 1;

System.out.println("右移1位(十进制):" + tmp + ";右移1位(二进制)" + Integer.toBinaryString(tmp));

tmp = num >>> 1;

System.out.println("无符号右移1位(十进制):" + tmp + ";无符号1位(二进制)" + Integer.toBinaryString(tmp));

tmp = num << 1;

System.out.println("左移1位(十进制):" + tmp + ";左移1位(二进制)" + Integer.toBinaryString(tmp));

/** 正数演示 **/

/** 负数演示 **/

System.out.println("-----------------负数演示-----------------");

num = -7;

System.out.println("原值(十进制):" + num + ";原值(二进制)" + Integer.toBinaryString(num));

tmp = num >> 1;

System.out.println("右移1位(十进制):" + tmp + ";右移1位(二进制)" + Integer.toBinaryString(tmp));

tmp = num >>> 1;

System.out.println("无符号右移1位(十进制):" + tmp + ";无符号1位(二进制)" + Integer.toBinaryString(tmp));

tmp = num << 1;

System.out.println("左移1位(十进制):" + tmp + ";左移1位(二进制)" + Integer.toBinaryString(tmp));

/** 负数演示 **/

}

}

复制代码

运行结果:

对输出结果补0对齐一下

正数 7

00000000 00000000 00000000 00000111 原值

00000000 00000000 00000000 00000011 右移1位

00000000 00000000 00000000 00000011 无符号右移1位

00000000 00000000 00000000 00001110 左移1位

负数 -7(负数为正数的补码=正数的反码+1)

11111111 11111111 11111111 11111001 原值

11111111 11111111 11111111 11111100 右移1位

01111111 11111111 11111111 11111100 无符号右移1位

11111111 11111111 11111111 11110010 左移1位

复制代码

可以看出,当要移位的数是正数时,右移和无符号右移的值是一样的,当移位的数是负数时,右移的后的值还是负数,无符号右移后的值则是正数。

另外在网上看到一个快速算出移位运算符结果的方法:

在不大于自身数值类型最大位数的移位时,一个数左移n位,就是将这个数乘以2的n次幂;一个数右移n位,就是将这个数除2的n次幂,然后取整。

比如int32位的(64位也是同样方法):

7 >> 1 = 7/2 取整为3

7<< 1 = 7*2 为14

如果移动位数超过了32位怎么办?把移位数和32取余数得到的数字套用即可:

如9 >> 67

1、先67对32取余,结果是3

2、然后9/8 得到结果为1

java右移位怎么算_Java移位运算符相关推荐

  1. java右移位_java移位运算符详解

    java 移位运算符不外乎就这三种: << (左移). >> (带符 号右移)和 >>> (无符号右移) 1 . 左移运算符 左移运算符 << 使 ...

  2. java 二进制、位运算、和移位运算符(2013-07-30-bd 写的日志迁移

    二进制是逢2进位的进位制,0.1是基本算符, 1字节=8位 比如 int a =1 ;int 占4个字节在计算机里表示为: java中的4个位运算,分别是"按位与&.按位或|.按位异 ...

  3. java学习(21):移位运算符

    //移位运算符 public class test{ public static void main(String[] args){ int num=3; //向左移位 System.out.prin ...

  4. java平移变换_java移位运算符:(左移)、(带符号右移)和(无符号右移)。...

    1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规 ...

  5. java三元表达式必须返回_java – 三元运算符的右手表达式必须兼容...

    您的方法声明返回类型是String.任何return语句都必须生成一个与声明的返回类型兼容的表达式. 但是,在这种情况下,返回类型可以是int,这解释了编译器拒绝它的原因. 这不是特定于三元运算符的, ...

  6. java 8位随机数字_java随即产生8位数的密码

    原文链接 http://blog.csdn.net/herrapfel/article/details/1885016 此处仅作记录使用 在Java中我们可以使用java.util.Random类来产 ...

  7. java 32位授权码_Java实现OAuth2.0授权码方式

    Java实现OAuth2.0授权码方式 前面介绍了OAuth2.0和授权方式,可以参考以下文章: 今天就用Java来验证OAuth2.0授权方式的授权码式,我们Spring Cloud的OAuth来实 ...

  8. java 两位小数 四舍五入_java里的四舍五入(保留两位小数,返回double类型)

    1.最简单的操作,验证之后是准确的四舍五入 double payPercent=123.345; System.out.println((double)Math.round(payPercent*10 ...

  9. java里包含怎么算_java中怎么判断一个字符串中包含某个字符或字符串

    展开全部 /*这是一62616964757a686964616fe58685e5aeb931333363393630个静态函数,不用声明对象就可以用的,如你的类名为Test,在任何情况下都可以调用Te ...

最新文章

  1. 2020年国际学术会议参考列表
  2. BIG DATA 大数据时代来临
  3. OpenCASCADE:拓扑 API之历史支持
  4. adb remount overlayfs的说明
  5. 【符号修改-X264系列】之根据静态库强符号修改代码工具
  6. windows程序设设计(2) SDK贴图
  7. Hash函数加密算法(一)
  8. 怎样成为PHP 方向的一个合格的架构师(转)
  9. linux系统 锐捷_Client for RuiJie(锐捷客户端 for linux) 升级版
  10. Web系统大规模并发-电商秒杀与抢购
  11. 什么方法可以显著提高程序员工作效率
  12. Python图书商城(可运行代码)有说明文档
  13. 经典电影list(辛辛苦苦整理的)
  14. JetBrains全系列破解
  15. MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中
  16. 体系结构实验(2)—— 不同指令集的对比
  17. 从 KPI 到 OKR,高阶产品人如何推动业务高速增长
  18. 简单枚举(ZJM要抵御宇宙射线)
  19. Python for循环遍历字典(dict)的方法
  20. 锁模光纤激光器 RP Fiber Power

热门文章

  1. CentOS7 Network Service启动问题
  2. setOnTouchListener报警告
  3. 微粉助手 v1.3.3
  4. 3 北京超算云计算平台深度学习环境配置笔记
  5. python习题-股票查询系统
  6. 【ExcelPlanet】电商母婴用品购买情况分析
  7. 如何将代码托管到GitHub
  8. 多标签分类怎么做?教你4招
  9. 网民担心网店新规阻碍电子商务发展
  10. Maya材质贴图向四则运算节点介绍