/**
* 1. 二进制的最高位是符号位:0表示整数,1表示复数
* 2. 正数的原码,反码,补码都一样(三码合一)
* 3. 负数的反码 = 它的原码符号位不变,其他位取反(0->1,1->0)
* 4. 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1
* 5. 0的反码,补码都是0
* 6. java没有无符号数,换言之,Java中的数都是有符号的
* 7. 在计算机运算的时候,都是以补码的方式来运算的
* 8. 当我们可能运算结果的时候,要看它的原码
*/
//位运算
//按位与& : 两位全为1,结果为1,否则为0
//按位或| : 两位有一个为1,结果为1,否则为0
//按位异或^: 两位有一个为0,一个为1,结果为1,否则为0
//按位取反~: 0->1,1->0
public class BitOperator{
public static void main(String[] args){
//推导
//1. 2的原码 00000000 00000000 00000000 00000010
// 3的原码 00000000 00000000 00000000 00000011
//2. 00000000 00000000 00000000 00000011 运算后的补码
//3. 转换为最终的原码,正数三码合一,结果为3
System.out.println(2|3);
//推导
//1. 2的原码 00000000 00000000 00000000 00000010
// 3的原码 00000000 00000000 00000000 00000011
//2. 00000000 00000000 00000000 00000001 运算后的补码
//3. 转换为最终的原码,正数三码合一,结果为1
System.out.println(2^3);
//推导
//1. 2的原码 00000000 00000000 00000000 00000010
// 3的原码 00000000 00000000 00000000 00000011
//2. 00000000 00000000 00000000 00000010 运算后的补码
//3. 转换为最终的原码,正数三码合一,结果为1
System.out.println(2&3);
//推导
//1. -2的原码 10000000 00000000 00000000 00000010
//2. -2的反码 11111111 11111111 11111111 11111101
//3. -2的补码 11111111 11111111 11111111 11111110
//4. ~-2操作 00000000 00000000 00000000 00000001 运算后的补码
//3. 转换为最终的原码,正数三码合一,结果为1
System.out.println(~-2);
//推导
//1. 2的原码 00000000 00000000 00000000 00000010
//2. ~2操作 11111111 11111111 11111111 11111101
//3. 运算后的反码 11111111 11111111 11111111 11111100
//4. 运算后的原码 10000000 00000000 00000000 00000011 ,结果为-3
System.out.println(~2);
}
}
java位运算(一)
猜你喜欢
转载自blog.csdn.net/Danelxiong/article/details/127826223
今日推荐
周排行