使用位运算,判断奇偶性
System.out.println(31&1);
System.out.println(30&1);
输出:
1 //31是奇数
0 //30是偶数
& | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
(31) → (0000 0000 ....... 0001 1111)
(1) → (0000 0000 .............0001) &= (0000 0000 .............0001) → (1) 奇数
-----------------------------------------------------------
(30) → (0000 0000 ....... 0001 1110)
(1) → (0000 0000 .............0001) &= (0000 0000 .............0000) → (0) 偶数
利用位运算,直接交换两个整数变量的值
int a = 10;
int b = 8;
a = a^b;
b = a^b;
a = a^b;
System.out.println("a = "+a);
System.out.println("b = "+b);
输出:
a = 8
b = 10
^ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
第一次运算:a = (10) = 1010b = (8) = 1000 ^0010 将结果赋值给a后a = 0010b = 1000
--------------------------------------------------
第二次运算:a = 0010b = 1000 ^1010将结果赋值给b后a = 0010b = 1010(此时b已经得到a的值)
--------------------------------------------------
第三次运算: a = 0010b = 1010 ^1000将结果赋值给a后a = 1000b = 0010交换完成
--------------------------------------------------
a = a^b;
b = a^b; 相当于初始的a连续异或b两次:a^b^b 此时得到值为a,又将他赋值给b
a = a^b; 此时b的值已经是初始a的值,a的值是初始a异或初始b的值,此时的a^b等价于初始的b连续异或两次a,结果是初始b的值,把他赋值给a,交换完成。
System.out.println(8+ "的绝对值是:"+((8^(8>>31))+(8>>>31)));
System.out.println(-8+ "的绝对值是:" + ((-8^(-8>>31))+(-8>>>31)));
输出:
8的绝对值是:8
-8的绝对值是:8
左移,即除符号位外,所有二进制位向高位移动指定位数,低位补0。左移一位,等价于一个数扩大2倍。
代码演示:
System.out.println(10<<2); //<<符号左边是要作出移动的数,右边是要移动几位
输出:
40
解释:
(10) = 0000 1010<<2 = 0010 1000 = (40)
右移,即除符号位外,所有二进制位向低位移动指定位数,高位补符号位。右移一位,约等于一个数缩小2倍(会产生精度丢失)。
代码演示:
System.out.println(10>>2);
System.out.println(-10>>2);
输出:
2
-3
解释:
(10) = 0000 1010>>2 = 0000 0010 = (2)-------------------------------------------------- (-10) = 1111 0110(补) 负数的补码>>2 = 1111 1101(补) = .0011(原) = -3
无符号右移,即向右移位时,连同符号位一起移动,最高位补0
代码演示:
System.out.println(-10>>>2);
输出:
1073741821
解释:
(-10) = 1111 0110(补)
>>>2 = 1111 1101(补) = 1073741821(补码直接转换为真值)
整数在java中占4个字节,32位,
8>>>31和-8>>>31为了得到数字的最高位8>>31 得到一串32位全为0的二进制数,此数与8异或,还是8,加上先前的8>>>31得到8
-8>>>31得到一串32位全为1的二进制数,此数与-8异或,相当于对-8连同符号位一起取反,然后加上-8>>>31。负数的补码等于正数连同符号位取反加一,负数求绝对值相当于此过程的逆过程。
才疏学浅,如果有写的不对的地方,请在评论区给出,谢谢!
本文发布于:2024-01-27 23:33:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063696013312.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |