大龄屌丝自学笔记--Java零基础到菜鸟--006
进制、原码、补码、反码
1、四种进制
1(开)、0(关) 组成一个二进制数据:1 bit(比特)。
1 byte=8 bit , 1 k=1024 byte , 1 m=1024 k , 1 g=1024 m , 1 t=1024 g 。
二进制 :0、1组成,以 “0b” 开头。
八进制 :0、1、2、3、4、5、6、7组成,以 “0” 开头。
十进制 :0、1、2、3、4、5、6、7、8、9组成,默认十进制。
十六进制:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f 组成,以 “0x” 开头。
2、其他进制转换为十进制
二进制->十进制 :每位数字本身*2的(n-1)次幂,如:0b101=1*2^2+0*2^1+1*2^0=5。
八进制->十进制 :每位数字本身*8的(n-1)次幂,如:0101=1*8^2+0*8^1+1*8^0=65。
十六进制->十进制:每位数字本身*16的(n-1)次幂,如:0x101=16*2^2+8*2^1+1*8^0=257。
十六进制字母对应数字:a(10)、b(11)、c(12)、d(13)、e(14)、f(15)。
3、十进制转其他进制
十进制->二进制 :十进制数除以2,除到商为0,从后往前将余数组合起来,如:5=(5/2=2【1】)=(2/2=1【0】)=(1/2=0【1】)=0b101。
十进制->八进制 :十进制数除以8 ,除到商为0,从后往前将余数组合起来,如:65=(65/8=8【1】)=(8/8=1【0】)=(1/8=0【1】)=0101。
十进制->十六进制:十进制数除以16,除到商为0,从后往前将余数组合起来,如:257=(257/16=16【1】)=(16/16=1【0】)=(1/16=0【1】)=0x101。
4、8421法:
二进制:1 、1 、1 、1 、1、1、1、1
十进制:128、64、32、16、8、4、2、1
二进制->十进制:1对应位置的数据直接相加,如:0b101=4+1=5。
十进制->二进制:从128开始依次递减,最后左侧补,如:5=(5-4=1【4,1】)=0b101。
5、拆分组合法:
二进制->八进制 :从右侧开始三位一组,不够左侧补灵,直接转换十进制,组合在一起,如:0b1101101=【001、101、101】=【1、5、5】=0155。
二进制->十六进制:从右侧开始4位一组,不够左侧补灵,直接转换十进制,组合在一起,如:0b1101101=【0110、1101】=【6、13】=0x6d。
6、原码、反码、补码
计算机内所有数据运算都是用补码进行的。
原码:就是二进制表示法,最高位(左侧)为符号位, “0” 表示正数, “1” 表示负数,如:7的原码为00000111,-7的原码为10000111。
反码:正数的反码与原码相同,负数的反码是对原码【符号位】以外的其他数字取反(0、1互换),如:7的反码为00000111,-7的反码为11111000。
补码:正数的补码与原码相同,负数的补码是其反码的末位(右侧)加1,如:7的补码为00000111,-7的补码为11111001。