Java 二进制符号位运算

二进制符号位运算


  • { | } 按位或运算符:二进制中一个是 1 ,结果就是 1 ,两个为 0 ,结果就是 0

  • { & } 按位与运算符:二进制中两个都为 1 . 结果才是 1,其余结果就是 0

  • { ^ } 按位异或运算符:二进制中两数相同,结果为 0,两数相异结果为 1,一个小技巧:任意一个数值 ^(按位异或) 0 都是它本身的,而相同的数值 ^ ( 异或运算) 等于 0,这个技巧可以用于交换数值,和找出不同数值的一些算法

  • { ~ } 按位取反运算符: 字面意思,就是一个二进制把 是 0 的变成 1,把 1 的变成 0 后计算出的结果

  • { >>> } 无符号右移: 注意这是无符号数的,当一个有符号数值,使用无符号数右移的操作符的话,会转换为无符号数的,其有符号数的最高位 就不是代表符号的意思了,而是一个数值了


代码:

public class Study10 {
    public static void main (String[] args) {
        int num = 5;  // 00000101
        int num2 = 6; // 00000110
        int num3 = -2; // 10000010
        System.out.println(num & num2); // 00000100  4
        System.out.println(num | num2); // 00000111  7
        System.out.println(num ^ num2); // 00000011  3
        System.out.println( ~num3 );  //
        System.out.println(num3>>>2); //
    }

}


结果:

在这里插入图片描述


解析:

  • 上述代码 第 7~9 行代码比较简单就不说了,我们重点说一下 10 ~ 11 行代码
  • 首先是第 9 行代码:一个负数 -2 的按位取反运算:
    • 在这里插入图片描述


  • 上述代码第 11 行,一个负数值使用无符号右移,首先该数值 { -2 },中的最高位符号位,不再是符号位了,而是变成了有效位,进行计算:

    • 在这里插入图片描述


  • 计算机验证

在这里插入图片描述


结尾:

限于自身水平有限,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值