二进制运算

mac2022-06-30  20

(1)按位与运算 &

1 & 1 = 1, 0 & 1 = 0 51 & 5 即 0011 0011 & 0000 0101 =0000 0001 = 1;

(2)按位或运算 |

1 | 0 = 1,1|1 =1, 0|0 =0 51 | 5 即 0011 0011 | 0000 0101 =0011 0111 =55;

(3)异或运算 ^

1 ^ 1 = 0,1 ^ 0 = 1 ,0^ 0 = 0(两个位的值不同,则结果为1,相同结果为0) 51 ^ 5 即 0011 0011 ^0000 0101 =0011 0110=54;

(4)<<左移运算符

1.将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0) (注意:java中 整数位 32位) 11 << 2 = 44 -14 <<2 =-56 -14的二进制(11111111 11111111 11111111 11110010)左移2位 为 11111111 11111111 11111111 11001000 结果为(-56)(后面讲述负数在二进制中如何表示的)

(5)>>右移运算符

将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1. 4 >> 2 = 1; -14 >> 2 = -4;

(6)~按位取反

~6 = -7

(7)>>>无符号右移运算符

二进制各个位向右移指定的位数,右移后左边空出来的位用零来填充,移出右边的位被丢弃。 -14 >>> 2 =11111111 11111111 11111111 11110010 => 00111111 11111111 11111111 11111100 =1073741820

(8)<<<无符号左移运算符

二进制各个位向左移指定的位数,左移后右边空出来的位用零来填充,移出左边的位被丢弃。 3 <<< 1 = 6

(9)二进制中负数的计算

负数以正数的补码表示 原码:一个整数按照绝对值的大小转化成二进制的数 反码:将二进制数按位取反 补码:反码加 1 以-14 举例 原码:14 即 00000000 00000000 00000000 00001110 反码: 11111111 11111111 11111111 11110001 补码: 11111111 11111111 11111111 11110010 所以-14 的二进制是 11111111 11111111 11111111 11110010 假设 我们得到 二进制让我们求整数 就是倒着来取相反数 如二进制是 11111111 11111111 11111111 11110010 得到反码减1 11111111 11111111 11111111 11110001 原码: 00000000 00000000 00000000 00001110 即 1110 = 14 所以取反 就是-14

转载于:https://www.cnblogs.com/c-x-a/p/9478643.html

最新回复(0)