个人技术分享

进制

1)进制是一种计数方式,它定义了我们如何表示和计算数字

2)当数位上的值达到最大值时,该位就“满位”,需要向高位进1

2)生活中常用的计数方式是十进制(满9进1)

进制

进制 进制数 计数方式    
二进制 0,1,10,11,100,101,110,111 满2进1
三进制 0,1,2,10,11,12,20,21,22,100 满3进1
四进制 0,1,2,3,10,11,12,13,20,21 满4进1
五进制 0,1,2,3,4,10,11,12,13,14,20 满5进1

六进制

0,1,2,3,4,5,10,11,12,13,14,15,20 满6进1
七进制 0,1,2,3,4,5,6,10,11,12 满7进1
八进制 0,1,2,3,4,5,6,7,10,11,12 满8进1
九进制 0,1,2,3,4,5,6,7,8,10,11,12 满9进1
十进制 0,1,2,3,4,5,6,7,8,9,10,11,12 满10进1
十一进制 0,1,2,3,4,5,6,7,8,9,A,10,11,12 满11进1
十二进制 0,1,2,3,4,5,6,7,8,9,A,B,10,11,12 满12进1
...... ...... ...... ......
十六进制 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12 满16进1
...... ...... ...... ......

对于整数,一般有四种表示方式:

进制 英文 数值 计数方式 表示方式
二进制 binary 0,1  满2进1 以0b或0B开头
八进制 octal  0,1,2,3,4,5,6,7 满8进1 以数字0开头
十进制   decimal 0,1,2,3,4,5,6,7,8,9 满10进1
十六进制 hex 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 满16进1 以0x或0X开头

说明

整形常量中最高位是符号位,0表示正数,1表示负数

示例

1)二进制数 0111 1111 = 十进制数 127

2)二进制数 1000 0000 = 十进制数 -128

二进制的整数的三种形式:

原码:直接将一个数值转换成二进制数。最高位是符号位

负数的反码:对原码按位取反,最高位(符号位)定为1

负数的补码:反码加1。

正数的原码、反码、补码都相同

示例(1)正数

原码14: 0000 1110

反码14: 0000 1110

补码14: 0000 1110

示例(2)负数

原码-14:1000 1110

反码-14:1111 0001

补码-14:1111 0010

说明

计算机中以二进制补码的形式保存所有的整数

进制的转换:

十进制 >> 二进制:除2取余的

例如:整数(13)

13除2 = 6余   1

  6除2 = 3余   0

  3除2 = 1余   1

  1余2 = 0余   1

所以十进制数13等于二进制数1101

二进制 >> 十进制:个位乘以2的0次方,十位乘以2的1次方,百位乘以2的2次方,以此类推

例如:二进制 0000 1110 1001

十进制 2⁷+2⁶+2⁵++2⁰ = 128+64+32+8+1 = 233

二进制 >> 八进制: 111 = 7  个位乘以2的0次方,十位乘以2的1次方,百位乘以2的2次方

例如:二进制0000 1110 1001

八进制0351

二进制>>十六进制:1111 = F

例如:二进制0000 1110 1001

十六进制0XE9

负数的计算:

正数的补码就是它自己

负数的补码是它的相反数全部取反再加1

示例

0011 0110 这是一个byte型整数. 是多少?

0x36 => 54

所以0011 0110是+54这个数据的真实存储.

示例

1100 1010 这是一个byte型整数, 是多少?

是一个负数, 负多少???? 需要减一再找到相反数

1)减一 => 1100 1001

2)取反 => 0011 0110 => 0x36 => 54

3)所以1100 1010是 -54

示例(1)

1111 1111 是负数

1)减一 => 1111 1110

2)取反 => 0000 0001 => 1

3)所以 1111 1111是 -1

示例(2)

1000 0000 是负数

1)减一 => 0111 1111

2)取反 => 1000 0000 => 0x80 => 128

3)所以1000 0000是 -128

说明

byte型最大值 

0111 1111 => 0x7F => 16*7+15 = 127

short型最大值

0111 1111 1111 1111 => 0x7FFF

short型最小值

1000 0000 0000 0000 => 0x8000

int型最大

0111 1111 1111 1111 1111 1111 1111 1111 => 0x7FFFFFFF

int型最小

1000 0000 0000 0000 0000 0000 0000 0000 => 0x80000000

long型最大

0x7FFFFFFF_FFFFFFFF

long型最小

0x80000000_00000000