JAVA 按位运算符的解释

按位运算符

Java定义了几个按位运算符,可以将其应用于整数类型long,int,short,char和byte。

按位运算符对位执行,并执行逐位运算。假设a = 60和b = 13; 现在以二进制格式,他们将如下 -

a = 0011 1100

b = 0000 1101

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

a&b = 0000 1100

a | b = 0011 1101

a ^ b = 0011 0001

a = 1100 0011

假设整数变量A保持60,变量B保持13,则 -

public class Test {

   public static void main(String args[]) {
      int a = 60;	/* 60 = 0011 1100 */
      int b = 13;	/* 13 = 0000 1101 */
      int c = 0;

      c = a & b;        /* 12 = 0000 1100 */
      System.out.println("a & b = " + c );

      c = a | b;        /* 61 = 0011 1101 */
      System.out.println("a | b = " + c );

      c = a ^ b;        /* 49 = 0011 0001 */
      System.out.println("a ^ b = " + c );

      c = ~a;           /*-61 = 1100 0011 */
      System.out.println("~a = " + c );

      c = a << 2;       /* 240 = 1111 0000 */
      System.out.println("a << 2 = " + c );

      c = a >> 2;       /* 15 = 1111 */
      System.out.println("a >> 2  = " + c );

      c = a >>> 2;      /* 15 = 0000 1111 */
      System.out.println("a >>> 2 = " + c );
   }}
输出结果
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 15
a >>> 15

总结:

&(按位和) 如果二进制AND运算符存在于两个操作数中,则二进制AND运算符将对结果复制一位。 (A和B)将给出12是0000 1100
| (按位或) 二进制OR运算符如果存在于任一操作数中,则复制一位。 (A | B)将给出61,其为0011 1101
^(按位异或) 二进制XOR操作符复制该位,如果它设置在一个操作数中,而不是两者。 (A ^ B)将给出49,其为0011 0001
(按位称赞) 二进制补码运算符是一元的,具有“翻转”位的作用。 (A)将给出-61,由于有符号的二进制数,它是2 0的补码形式的1100 0011。
<<(左移) 二进制左移操作符。左操作数值左移由右操作数指定的位数。 A << 2将给出240是1111 0000
>>(右移) 二进制右移操作符。左操作数值被右操作数指定的位移动。 A >> 2将给出15是1111
>>>(零填补右移) 右移零填充操作符。左操作数值右移由右操作数指定的位数,移位值用零填充。 A >>> 2将给出15是0000 1111
时间: 2024-12-29 23:34:31

JAVA 按位运算符的解释的相关文章

Java的位运算符具体解释实例——与(&amp;amp;)、非(~)、或(|)、异或(^)

位运算符主要针对二进制,它包含了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.以下具体介绍每一个位运算符. 1.与运算符与运算符用符号“&”表示,其使用规律例如以下:两个操作数中位都为1,结果才为1,否则结果为0,比如以下的程序段.public class data13{public static void main(String[] args){int a=129;int b=

Java的位运算符详解实例

Java的位运算符详解实例——与(&).非(~).或(|).异或(^).右移(>>).左移(<<).无符号右移(>>>) 位运算符主要针对二进制, 它包括了:“与”.“非”.“或”.“异或”."右移"."左移"."无符号右移". 从表面上看似乎有点像逻辑运算符, 但逻辑运算符是针对两个关系运算符来进行逻辑运算, 而位运算符主要针对两个二进制数的位进行逻辑运算. 下面详细介绍每个位运算符. 1.与运

Java的位运算符笔记

Java的位运算符有:&与.|或.^异或.~非.<<算术左移.>>算术右移.>>>逻辑右移 1. &(与) 全是1-->1 全是0-->0 有1有0-->0 例:000 111 010 101 000 111 101 101 ---------------------------- 000 111 000 101 1 int i = 1; //00000000000000000000000000000001 2 int j = 2

Java的位运算符实例——与(&amp;)、非(~)、或(|)、异或(^)

一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 0 1 1 1 3.或(|) 0 & 2 = 2 0 0 0 0 1 0 0 1 0 4.异或(^) 1 & 2 = 3 0 0 1 0 1 0 0 1 1 二.运用场景.(类似打标) public enum FlagEnums { A(1, "高"), B(2, &qu

java的位运算符(&gt;&gt;,&lt;&lt;,&gt;&gt;&gt;,&amp;,|)

主要总结下java的位运算符的操作.java的位运算符不紧可以提高运行效率,同时也有会意想不到的效果(java.util.ArrayDeque有很好的体现),在后续中会举例说明. 开始说位运算符之前,先简单的复习下补码的知识,然后举个简单的例子说明下计算机中的补码操作(计算机中的加减法). 补码 计算机进行加减法操作时,都是以补码进行操作的,所以java中的位运算都是以补码进行操作的.正数的补码是其本身,而负数的补码为其反码+1.如下例子. 因为java中int型是4个字节,需要32位,为了写起

[转]Java的位运算符详解实例——与(&amp;)、非(~)、或(|)、异或(^)

位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面详细介绍每个位运算符. 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段.public class data13{public static void main(String[] args){int a=129;int b=128

Java基础-位运算符Bitwise Operators

Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 原文地址:https://www.cnblogs.com/yinzhengjie/p/8689059.html

Java按位运算符之按位取反

一 数据储存形式 二进制在内存中以补码的形式存在. 补码首位是符号位,0表示该数是正数,1表示该数是负数. 例如: 数值 带符号的二进制原码 (首位表示符号位) 补码 内存中的形式 (*表示无效位,其数量取决于分配的内存空间) 9 01001 01001 0***1001 -1 11 11 1***1  二 补码是什么 正数: 补码 = 反码 = 原码 负数: 原码取反 = 反码,反码+1 = 补码 ??运算时: 符号位不变,有效位进行运算!带*号的为无效位. 例如:   原码 反码 补码 9

Java千问:Java语言位运算符详解

很多编程语言都有位运算符,Java语言也不例外.在Java语言中,提供了7种位运算符,分别是按位与(&).按位或(|).按位异或(^).取反(~).左移(<<).带符号右移(>>)和无符号右移(>>>).这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符.在讲解这些运算符的使用之前,必须了解一个常识,那就是:位运算符是对long.int.short.byte和char这5种类型的数据进行运算的,我们不能对double.float和boolean进