二进制
- 计算机中的数据都以二进制数字保存。
- 二进制:逢二进一。即只有 0、1 两个值。
如:十进制的 10 在计算机内保存为二进制的 1010
计算机中信息的存储单位
位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本的单位。
字节(Byte):一个字节由 8 个位组成。它表示作为一个完整处理单位的 8 个二进制数码。
补码:
事实上,计算机内的二进制数值是以补码形式表示的。
补码:
一个正数的补码和其原码的形式是相同的。
负数的补码是:将该数的绝对值的二进制形式,按位取反再加 1。
由此可知,二进制补码数值的最高位(最左位)是符号位:该位为 0,表示数值为正数;该位为 1,表示数值为负数。
10 = | 00000000 | 00000000 | 00000000 | 00001010 |
-10 = | 11111111 | 11111111 | 11111111 | 11110110 |
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
- 二进制和十进制之间的互换
- 二进制数转换成十进制数
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。例:原码 1011.01 = 1×23+0×22+1×21+1×20+0×2-1+1×2-2
= 8+0+2+1+0+0.25
=11.25
十进制转换成二进制
整数部分:"除 2 取余,逆序排列"法
小数部分:"乘 2 取整,顺序排列"法
十六进制
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
十六进制:基数为十六,逢十六进一。它用 abcdef 表示从 0-9 之上的值。Java 中十六进制数据要以 0x 或 0X 开头。如:0x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可。
二进制 十六进制 |
0000 | 0 | |
0001 | 1 | |
0010 | 2 | |
0011 | 3 | |
0100 | 4 | |
0101 | 5 | |
0110 | 6 | |
0111 | 7 | |
1000 | 8 | |
1001 | 9 | |
1010 | A | |
1011 | B | |
1100 | C | |
1101 | D | |
1110 | E | |
1111 | F |
八进制
八进制:基数为八。
Java 中八进制数据要以 0 开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制的了。
二进制 | 八进制 |
000 | 0 |
001 | 1 | |
010 | 2 | |
011 | 3 | |
100 | 4 | |
101 | 5 | |
110 | 6 |