美文网首页
Java 位运算符

Java 位运算符

作者: 月小升_582e | 来源:发表于2020-02-17 14:57 被阅读0次

https://java-er.com/blog/java-shit-operation/

Java位运算符(bitwise operators),应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)。

运算符作用在所有的位上,并且按位运算。假设a = 5,b = 12;它们的二进制格式表示将如下:

A = 0101

B = 1100

-----------------

A&B = 0100

A | B = 1101

A ^ B = 1001

~A= 1010

操作符描述例子

&如果相对应位都是1,则结果为1,否则为0a & b = 4 即100

|如果相对应位都是 0,则结果为 0,否则为 1a | b = 13 即1101

^如果相对应位值相同,则结果为0,否则为1a ^ b = 9 即1001

〜按位取反运算符翻转操作数的每一位,即0变成1,1变成0。~a = -6 即1010

<< 按位左移运算符。左操作数按位左移右操作数指定的位数。a << 2 = 20 即10100

>> 按位右移运算符。左操作数按位右移右操作数指定的位数。a >> 2 = 1 即1

>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。a >>> 2 = 1 即1

位移说明

A << 2 表示A 向左边移动2位

A = 0101

计算机的前面其实还有很多0

所以 表示如下

位移前:A  = 0000 0101

位移后:A  = 0001 0100

当A >> 2 向右边移动的时候,后面没有空间了。所以砍掉

位移前:A  = 0000 0101

位移后:A  = 0000 0001

Java测试代码

int a = 5;

int b = 12;

System.out.println("a 的二进制:" + Integer.toBinaryString(a));

System.out.println("b 的二进制:" + Integer.toBinaryString(b));

int c = 0;

c = a & b;     

System.out.println("a & b = " + c +" 即"+Integer.toBinaryString(c));

c = a | b;     

System.out.println("a | b = " + c +" 即"+Integer.toBinaryString(c));

c = a ^ b;     

System.out.println("a ^ b = " + c +" 即"+Integer.toBinaryString(c));

c = ~a;         

System.out.println("~a = " + c +" 即"+Integer.toBinaryString(c));

c = a << 2;   

System.out.println("a << 2 = " + c +" 即"+Integer.toBinaryString(c));

c = a >> 2;   

System.out.println("a >> 2  = " + c+" 即"+Integer.toBinaryString(c) );

c = a >>> 2;   

System.out.println("a >>> 2 = " + c+" 即"+Integer.toBinaryString(c) );

输出

a 的二进制:101

b 的二进制:1100

a & b = 4 即100

a | b = 13 即1101

a ^ b = 9 即1001

~a = -6 即11111111111111111111111111111010

a << 2 = 20 即10100

a >> 2  = 1 即1

a >>> 2 = 1 即1

复合位赋值运算符

运算符含义实例结果

&=按位与赋值a &= b等价于 a=a & b

|=按位或赋值a |= b等价于 a=a | b

^=按位异或赋值a ^= b等价于 a=a ^ b

-=按位取反赋值a ~= b等价于 a=a ~ b

«=按位左移赋值a «= b等价于 a=a « b

»=按位右移赋值a »= b等价于 a=a » b

相关文章

  • python基础(四)----运算符

    一.算术运算符(基本同Java) 二.比较运算符(基本同Java) 三.赋值运算符(基本同Java) 四.位运算符...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java &、&&、|、||、^、<

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • Java各种&、&&、|、||、^、<<、>>、~、>>>等运算

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • 算法整理(1) 位运算相关

    运算符 位运算符用来对二进制位进行操作,Java中提供了如下的位运算符:位运算符中,除 ~ 以外,其余均为二元运算...

  • Kotlin 运算符、符号重载总结

    算数运算符 关系运算符 示例 逻辑运算符 位运算符 三目运算 Java Kotlin forEach、in 循环 ...

  • Java 位运算符

    https://java-er.com/blog/java-shit-operation/ Java位运算符(bi...

  • Java运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

  • Java的运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

  • JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一、概述 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语...

网友评论

      本文标题:Java 位运算符

      本文链接:https://www.haomeiwen.com/subject/qbbbfhtx.html