原码:符号位+数值
反码:正数的反码就是原码,负数的反码是符号位不变,其他部分取反
补码:正数的反码就是原码,负数的反码是符号位不变,其他部分取反+1
计算机的数值相加,补码+补码=补码,得到原码还需要进一步运算
java中的位运算:
与运算符号:&
或运算符号:|
异或运算符号:^ 例子: 不同的为1,相同的位0
取反符号:~
左移运算符:<<
设x为被位移值,y为本次位移的位数,z为x所属类型的最大存储位数:
x << y = x << (y%z)
有符号右移运算符:>> 依照原符号位,如果原符号位是1,那么图4里需要补位的空位全部补1,如果原符号位为0,则全部补0
无符号右移运算符:>>> 无视原符号位,全部补0
类型转换溢出:int 强转 long类型数字,二进制转,若负数为补码,再转成原码
实际应用:
可以将是否这种字段,存成数字表示,int型可以表示8个