java中的“&”、“

您所在的位置:网站首页 java中各种符号的意义和用法有哪些呢图片 java中的“&”、“

java中的“&”、“

2024-07-05 07:38| 来源: 网络整理| 查看: 265

文章目录 问题:位运算符的用法&运算符|运算符^运算符~运算符

问题:

java源码中的位运算是如何使用的?

位运算符的用法

java中的“&”、“|”、“^”、“~”逻辑运算符的使用,此处使用了int类型,4个字节32位

&运算符

&是AND运算符,是一种位运算符。有0为0,全1为1。

运算规则如下:

1&1=1;1&0=0;0&1=0;0&0=0; /** * &是AND运算符,是一种位运算符。有0为0,全1为1 * 运算规则如下: * 1&1=1; * 1&0=0; * 0&1=0; * 0&0=0; */ @Test public void test01() { //a的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0111 int a = 7; print2Binary(a); //b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0010 int b = 2; print2Binary(b); //c=a&b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0010 int c = a & b;//十进制为2 System.out.println("a&b=" + c); print2Binary(c); }

运算结果:

十进制数[7]二进制补码表示为:111 十进制数[2]二进制补码表示为:10 a&b=2 十进制数[2]二进制补码表示为:10 |运算符

|是OR运算符,是一种位符。有1为1,全0为0

运算规则如下:

1|1=1;1|0=1;0|1=1;0|0=0; /** * |是OR运算符,是一种位符。有1为1,全0为0 * 运算规则如下: * 1|1=1; * 1|0=1; * 0|1=1; * 0|0=0; */ @Test public void test02() { //a的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0111 int a = 7; print2Binary(a); //b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0010 int b = 2; print2Binary(b); //c=a|b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0111 int c = a | b;//十进制为7 System.out.println("a|b=" + c); print2Binary(c); }

运算结果:

十进制数[7]二进制补码表示为:111 十进制数[2]二进制补码表示为:10 a|b=7 十进制数[7]二进制补码表示为:111 ^运算符

^是异或运算符,是一种位符。相同为0,不同为1 运算规则如下:

1^1=0;1^0=1;0^1=1;0^0=0; /** * ^是异或运算符,是一种位符。相同为0,不同为1 * 运算规则如下: * 1^1=0; * 1^0=1; * 0^1=1; * 0^0=0; */ @Test public void test03() { //a的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0111 int a = 7; print2Binary(a); //b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0010 int b = 2; print2Binary(b); //c=a^b的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0101 int c = a ^ b;//十进制为5 System.out.println("a^b=" + c); print2Binary(c); }

运算结果:

十进制数[7]二进制补码表示为:111 十进制数[2]二进制补码表示为:10 a^b=5 十进制数[5]二进制补码表示为:101 ~运算符

~是非运算符,是一种位符。0取反为1,1取反为0 运算规则如下:

~1=0;~0=1; /** * ~是非运算符,是一种位符。0取反为1,1取反为0 * 运算规则如下: * ~1=0; * ~0=1; */ @Test public void test04() { //a的二进制补码表示为:0000 0000 0000 0000 0000 0000 0000 0111 int a = 7; print2Binary(a); /** * b按位二进制补码表示为 1111 1111 1111 1111 1111 1111 1111 1000 * b的二进制原码表示则为 1000 0000 0000 0000 0000 0000 0000 1000 * 原码的第一位为符号位1代表负数,值为-8 */ int b = ~a; System.out.println("~a取反为:" + b); print2Binary(b); }

运算结果:

十进制数[7]二进制补码表示为:111 ~a取反为:-8 十进制数[-8]二进制补码表示为:11111111111111111111111111111000

其中打印二进制的方法print2Binary如下:

/** * 打印十进制数二进制 * * @param a */ private void print2Binary(int a) { StringBuilder sb = new StringBuilder(); sb.append("十进制数["); sb.append(a); sb.append("]二进制补码表示为:"); sb.append(Integer.toBinaryString(a)); System.out.println(sb.toString()); }

其他位运算:>在《java位于算——一个测试搞懂位运算》中有做说明



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3