【Java笔记】06 进制
一、四种进制
整数的四种表示方法:
1.二进制:0,1,满2进1,以0b或0B开头
2.十进制:0-9,满10进1
3.八进制:0-7,满8进1,以数字0开头表示
4.十六进制:0-15,满16进1,以0x或0X开头表示
int n1 = 0b1010;//二进制,10
int n2 = 1010;//十进制,1010
int n3 = 01010;//八进制,01010
int n4 = 0X10101//十六进制,0X10101
二、进制转换
- 十进制转二进制
 除2取余,注意一个字节8位 34=0B0010 0010
- 十进制转八进制
 除8取余,131=0203
- 十进制转十六进制
 除16取余,237=0xED
- 二进制转八进制
 低位开始,二进制数三位一组,转成八进制
 0B11 010 101=>0 3 2 5
- 二进制转十六进制
 低位开始,四位一组
 0b1101 0101 => 0x D 5
三、原码、反码、补码
对于有符号:
1.二进制的最高位是符号位,0表示整数,1表示负数
2.正数的原码、反码、补码都一样
3.负数的反码=原码符号位不变,其它位取反
4.负数的补码=反码+1,负数的反码=负数的补码-1
5.0的反码,补码都是0
6.Java没有无符号数
7.计算机都是以补码的方式运算的
8.看运算结果时,看原码
四、位运算符
- 按位与&    两位全为1,结果为1,否则为0
 2&3
 1.2的原码=>00000000 00000000 00000000 00000010
 2的补码=>00000000 00000000 00000000 00000010
 2.3的补码=>00000000 00000000 00000000 00000011
 3.按位与&
 00000000 00000000 00000000 00000010
 00000000 00000000 00000000 00000011
 =>00000000 00000000 00000000 00000010 运算后的补码
 原码一样
 结果是2
- 按位或| 两位一个为1,结果为1,否则为0
- 按位异或^ 两位一个为0,一个为1(两位不一样),结果为1,否则为0
- 按位取反~ 0->1,1->0
- 算数右移>>:低位溢出,符号位不变,符号位补溢出的高位
 int a = 1 >> 2;//1 => 00000001 =>00000000 本质1÷2÷2=0
- 算数左移<<:符号位不变,低位补0
 int a = 1 << 2;//1 => 00000001 => 00000100 本质1×2×2
- 逻辑右移、无符号右移>>>:低位溢出,高位补0
 
                         
                                

