二进制(Java 版)

操作 效果(十进制) 描述 备注
左移 ✖️2 在末尾添加一位 0 ⚠️有溢出风险
右移 将数字除以 2 并求整数商的操作 去除末尾的那一位 0
操作 符号 说明
左移 <<
逻辑右移 >>> 逻辑右移 1 位,左边补 0 即可
算术右移 >> 保持符号位不变,除符号位之外的右移一位并补符号位 1。补的 1 仍然在符号位之后

举例

二进制 十进制 操作 结果(二进制) 结果(十进制)
110101 53 左移一位 1101010 106
110101 53 右移一位 11010 26
   /**
     * 向左移位
     * @param num 被移位的十进制数
     * @param m 向左移动位数
     * @return 移位后的十进制数
     */
    public static int leftShift(int num, int m) {
        return num << m;
    }

    /**
     * 向右移位
     * @param num 被移位的十进制数
     * @param m 向右移动位数
     * @return 移位后的十进制数
     */
    public static int rightShift(int num, int m) {
        return num >>> m;
    }

补码

  • 出现原因:CPU 的运算器只实现了加法器,而没有实现减法器
  • 有符号的二进制数,负数用补码标识

计算规则

正数

  • 原码 = 反码 = 补码

负数

  • 反码 = 符号位不变,其他位取反
  • 补码 = 反码 + 1

或、与、异或

逻辑值

二进制 含义
1
0

位的“或”

  • 定义: 参与操作的位中只要有一个位是 1,那么最终结果就是 1,也就是“真”。

位的“与”

  • 定义: 参与操作的位中必须全都是 1,那么最终结果才是 1(真),否则就为 0(假)。

位的“异或”

  • 定义: 具有排异性,也就是说如果参与操作的位相同,那么最终结果就为 0(假),否则为 1(真)。
  • 可以判断两个变量是否相等

Java 符号说明

操作符 含义
|
&
^ 异或
发布了182 篇原创文章 · 获赞 42 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/wyyl1/article/details/103586665