【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