java 中的运算符号

正数的源反补码都相同;
负数的反码是源码的符号位不动,其余按位取反;
负数的补码是在反码的基础上 +1;
(计算机都是按照补码的形式存在的)
常用的基本运算这里就不做介绍了,介绍一下几种:

非位运算(~)
// 按位取反运算符翻转操作数的每一位,即0变成1,1变成0;
int a = 12; //二进制表示:0000 1100
// 按位取反(此时还是补码的形式) 1111 0011
// 反码 -1: 1111 0010
// 源码: 1000 1101 
~a = -13
与位运算(&)
// 如果对应位数都为1则为1,否则为0;
int a = 12; //二进制表示:0000 1100
int b = 20; //二进制表示:0001 0100
a & b = 4;	// 	 与运算: 0000 0100
或位运算(|)
// 相同位数有1的为1,都为0才为0;
int a = 12; //二进制表示:0000 1100
int b = 20; //二进制表示:0001 0100
a | b = 28;	//或运算:	0001 1100
异或位运算(^)
// 如果对应位数相同则为0,否则为1
int a = 12; //二进制表示:0000 1100
int b = 20; //二进制表示:0001 0100
a ^ b = 24;	//或运算:	0001 1000

你可能感兴趣的:(java)