1.Java int型为32位,如 正数
0b 0000 0000 0000 0000 0000 0000 0000 0001 = 1
0b 0000 0000 0000 0000 0000 0000 0000 0011 = 3
0b 0000 0000 0000 0000 0000 0001 0000 0000 = 64
负数 (不明白后面有讲)
0b 1000 0000 0000 0000 0000 0000 0000 0000 = -2147483648 (-2^31)
0b 1111 1111 1111 1111 1111 1111 1111 1111 = -1
2. 正数的原码反码补码都一样的
负数 原码:1001011
反码:1110100(原码除负数为不变 其余取反)
补码:1110101(反码 + 1)
3. 再看-1 原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
4. 位运算
>>(右移)
7 >> 2 = 111 >> 2
= 11 >> 1
= 1
<<(左移)
3 << 2 = 11 << 2
= 110 << 1
= 1100 = 12
5. 注意:
1)溢出即没(有一个特殊情况 跳转6)
2)空位由0填补,除了负数右移左边由1填补(例如-1右移多少还是-1)
6. 今儿碰到的一个问题
System.out.println(1 >> 32); //out:1
System.out.println(1 << 32); //out:1
System.out.println(1 << 33); //out:2
System.out.println(1 << 34); //out:4
然后我有试了
System.out.println(1 >> 64); //out:1
System.out.println(1 << 64); //out:1
System.out.println(1 << 65); //out:2
System.out.println(1 << 66); //out:4
这个其实是a<<b是要对b进行去模运算的,也就是32%32=0
因此1<<32 =====>1<<0所以结果是1
如果是long型的 那么就要 %64了
0b 0000 0000 0000 0000 0000 0000 0000 0001 = 1
0b 0000 0000 0000 0000 0000 0000 0000 0011 = 3
0b 0000 0000 0000 0000 0000 0001 0000 0000 = 64
负数 (不明白后面有讲)
0b 1000 0000 0000 0000 0000 0000 0000 0000 = -2147483648 (-2^31)
0b 1111 1111 1111 1111 1111 1111 1111 1111 = -1
2. 正数的原码反码补码都一样的
负数 原码:1001011
反码:1110100(原码除负数为不变 其余取反)
补码:1110101(反码 + 1)
3. 再看-1 原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
4. 位运算
>>(右移)
7 >> 2 = 111 >> 2
= 11 >> 1
= 1
<<(左移)
3 << 2 = 11 << 2
= 110 << 1
= 1100 = 12
5. 注意:
1)溢出即没(有一个特殊情况 跳转6)
2)空位由0填补,除了负数右移左边由1填补(例如-1右移多少还是-1)
6. 今儿碰到的一个问题
System.out.println(1 >> 32); //out:1
System.out.println(1 << 32); //out:1
System.out.println(1 << 33); //out:2
System.out.println(1 << 34); //out:4
然后我有试了
System.out.println(1 >> 64); //out:1
System.out.println(1 << 64); //out:1
System.out.println(1 << 65); //out:2
System.out.println(1 << 66); //out:4
这个其实是a<<b是要对b进行去模运算的,也就是32%32=0
因此1<<32 =====>1<<0所以结果是1
如果是long型的 那么就要 %64了