Java中的 移位 运算

  • 正数

    • 左移
    • 右移
    • 无符号右移
  • 负数
    • 右移
    • 无符号右移
    • 左移

下面通过代码来演示:
(在注释中 会标明 移位运算的 一些理论 )

public class Move {public static void main(String[] args) {Integer integer = 10;Integer integer2 = -10;System.out.println("====++正数++==============================");printValue(integer); // 10  1010System.out.println("====左移====");// 在二进制上,某个数左移n位,就是将 这个数对应的二进制数 的低位补 n 个0// 在十进制上,某个数左移n位,结果为:【这个数 * (2的n次方)】printValue(integer << 1); // 20printValue(integer << 2); // 40printValue(integer << 3); // 80System.out.println("====右移====");// 在二进制上,某个数右移n位,就是将 这个数对应的二进制数 的低位直接去掉 n 个数// 在十进制上,某个数右移n位,结果为:【这个数 / (2的n次方)】printValue(integer >> 1); // 5printValue(integer >> 2); // 2printValue(integer >> 3); // 1System.out.println("====无符号右移====");// 同为正整数 10,我们看不到 右移 和 无符号右移 的区别printValue(integer >>> 1);// 5printValue(integer >>> 2);// 2printValue(integer >>> 3);// 1System.out.println("====--负数--===================================");// 负数的二进制是:其绝对值的补码【即 绝对值的 源码取反 再加1】printValue(integer2); // -10    11111111111111111111111111110110System.out.println("====右移====");// 在二进制上,某个负数右移n位,就是将 这个负数对应的二进制数 的低位直接去掉 n 个数;但是要保证 位数不变,需要在最高位 补 n个1。// 负数右移 使得它 变大了printValue(integer2 >> 1); //-5    11111111111111111111111111111011printValue(integer2 >> 2); //-3    11111111111111111111111111111101printValue(integer2 >> 3); //-2    11111111111111111111111111111110System.out.println("====无符号右移====");// 在二进制上,某个负数 无符号右移n位,就是将 这个负数对应的二进制数 的低位直接去掉 n 个数;但在最高位 补 n个0【相当于在 最高位上不补 数】。// 负数进行无符号右移后,变成了很大的正数。// -1 无符号右移 1位时,为2147483647,正好为 Integer.MAX_VALUE 的值printValue(integer2 >>> 1); // 2147483643   1111111111111111111111111111011printValue(integer2 >>> 2); // 1073741821   111111111111111111111111111101printValue(integer2 >>> 3); // 536870910    11111111111111111111111111110printValue(Integer.valueOf(-1) >>> 1); // 2147483647    1111111111111111111111111111111System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println("====左移====");// https://blog.csdn.net/weixin_42116791/article/details/114817744}public static void printValue(Integer number){//打印 十进制数System.out.println(number);//打印 对应的二进制数System.out.println(Integer.toBinaryString(number));System.out.println("------");}
}
// 上面代码的 执行结果为:
====++正数++==============================
10
1010
------
====左移====
20
10100
------
40
101000
------
80
1010000
------
====右移====
5
101
------
2
10
------
1
1
------
====无符号右移====
5
101
------
2
10
------
1
1
------
====--负数--==================================
-10
11111111111111111111111111110110
------
====右移====
-5
11111111111111111111111111111011
------
-3
11111111111111111111111111111101
------
-2
11111111111111111111111111111110
------
====无符号右移====
2147483643
1111111111111111111111111111011
------
1073741821
111111111111111111111111111101
------
536870910
11111111111111111111111111110
------
2147483647
1111111111111111111111111111111
------
2147483647
====左移====Process finished with exit code 0

Java中的 移位 运算相关推荐

  1. java中的移位运算

    什么是移位运算 在计算机中,整数总是以二进制的形式表示.可以对整数进行移位运算.例如:对整数3进行左移一位运算将会得到整数6. 00000000 00000000 00000000 00000011 ...

  2. c语言4字节移位运算,深入懂得C语言中的移位运算

    深入理解C语言中的移位运算 说明:本文主要摘录自<深入理解计算机系统>第二章信息的表示与处理. 移位运算: C语言还提供了一组移位运算,以便向左或者向右移动位模式.对于一个位表示为[xn- ...

  3. java中有三种移位运算符

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  4. Java中「与运算,或运算,异或运算,取反运算。」

    Java中「与运算,或运算,异或运算,取反运算.」 文章目录 Java中「与运算,或运算,异或运算,取反运算.」 Java中的「与运算(AND) & 」 规则 :都为1时才为1,否则为0 Ja ...

  5. C 语言中负数移位运算讲解

    C 语言中负数移位运算讲解 "<<".">>"为移位运算符. "<<"为左移位运算符,即数据字节中的每个 ...

  6. Java中的幂运算(幂函数):如何编写一个数的n次方?

    ** Java中的幂运算(幂函数):如何编写一个数的n次方? ** java.lang.Math类中的pow方法. 方法声明:Math.pow(double m, double n) 参数说明:m为要 ...

  7. 解析java中的除法运算和取模运算

    解析java中的除法运算和取模运算 A.除法运算 a.含义及其语法 除法运算就是被除数除以除数的这一过程 语法: 被除数/除数 注意:除数不能为0,且被除数和除数都得是数字 b.应用场景 1.和取模运 ...

  8. Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位

    Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?  二.代码理解 ...

  9. java中的移位运算符与无符号位移

    引用: java中有三种移位运算符 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >&g ...

最新文章

  1. [Android1.5]打开多个Activity,返回到第一个Activity的问题
  2. [机器学习]回归--(Simple LR and Multiple LR)
  3. java nutz_jnutz: 基于nutz的java+js混合开发项目
  4. leetcode 148 --- 链表排序
  5. Vision Transformer(ViT)PyTorch代码全解析(附图解)
  6. weblogic忘记console密码
  7. Hive的数据模型-管理表
  8. syscall 系统调用陷入_系统调用深度剖析(上)
  9. 塑料壳上下扣合的卡扣设计_一种塑料件卡扣结构制造技术
  10. python读取mysql以html形式输出_python从mysql数据库提取出来的数据怎么在html里显示...
  11. 用C语言编写贪吃蛇小游戏
  12. 诺顿企业版 V11.0
  13. otool 与dylib
  14. VB 连接AutoCad 模块代码
  15. [bzoj4199][后缀数组][后缀自动机]品酒大会
  16. linux刻录光盘空间不足,Linux下的光盘刻录技巧
  17. Python爬取哔哩哔哩实时直播弹幕
  18. OBB包围盒及其碰撞检测算法(一)
  19. Wi-Fi 7全新升级,小米蓄势待发!
  20. Self和self的区别

热门文章

  1. r语言中怎样获得混淆矩阵
  2. 软件测试集群,集群搭建完成简要测试集群(性能)带宽与IOPS
  3. 算法总结——栈与队列
  4. C县宏站网络优化及开福区Volte分析报告
  5. TurboLinux入门教程:第九课文件与目录操作(转)
  6. 真无线蓝牙耳机玩游戏真的不行吗?2021哪款蓝牙耳机性价比高?
  7. 33. 如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务
  8. 实名制引发全球大争论
  9. Vulnhub靶机渗透之Me and My Girlfriend
  10. 每日excel学习之单元格格式设置