一、常用进制
进制是人们规定的一种进位方法。对于任何一种进制——X进制,就表示某一位置的数位运算时是逢X进一位。例如: 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,依此类推可以得出:X进制就是逢X进一。
十进制 | 二进制 | 八进制 | 十六进制 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
1、二进制
二进制数据是用0和1两个数字来表示的数。进位规则:“逢二进一”,借位规则:“借一当二”
当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储。
八进制的数和二进制数可以按位对应(八进制一位对应二进制三位)。
2、八进制
八进制是一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进一。
3、十六进制
十六进制有0-9、A-F组成,且字母不区分大小写。与十进制的对应关系是0-9对应:0-9,A-F对应:10-15。
十六进制的数和二进制数可以按位对应(十六进制一位对应二进制四位)。
二、进制之间的转换
1、十进制转化二进制
方法:倒序除二取余法
例如:十进制32转化成二进制
十进制的小数转化成二进制
小数部分和2相乘,不足1取0,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果
例如:
1)乘的时候只乘小数部分
2)0.432只有三位,所以只需要3位
3)0.432的二进制数为0.011
2、十进制转化成八进制
方法:倒序除八取余法
3、十进制转化成十六进制
方法:倒序除十六取余法
4、X进制转化为十进制
方法:X数权值法
例如:二进制转化成十进制
以此类推,八进制、十六进制等X进制转化成十进制就是乘X次幂
5、二进制转八进制
方法:三位一体法
6、二进制转十六进制
方法:四位一体法
三、C语言中相应进制的表示方法
十进制 | 以正常数字1-9开头,如123 |
八进制 | 以数字0开头,如0123 |
十六进制 | 以0x开头,如0x123 |
二进制 | C语言不能直接书写二进制数 |
四、计算机内存中数值存储方式——原码、反码、补码
1、原码
原码即原始的二进制码,特点如下:
- 最高位作为符号位,0表示正,1表示负
- 其他数值部分就是数值本身绝对值的二进制数
- 负数的原码是在其绝对值的基础上,最高位变成1
例如:【下面数值以一个字节(即8位)的大小描述】
十进制数 | 原码 |
+15 | 0000 1111 |
-15 | 1000 1111 |
+0 | 0000 0000 |
-0 | 1000 0000 |
2、反码
- 对于正数,反码和原码相同
- 对于负数,符号位不变,其它部分取反(1变成0,0变成1)
十进制数 | 反码 |
+15 | 0000 1111 |
-15 | 1111 0000 |
+0 | 0000 0000 |
-0 | 1111 1111 |
3、补码
在计算机系统中,数值一律用补码来存储
特点:
- 对于正数,原码、反码、补码相同
- 对于负数,补码是在反码的基础上+1
- 补码的符号位不变,其他位求反,最后整个数+1,将得到其原码
十进制数 | 补码 |
+15 | 0000 1111 |
-15 | 1111 0001 |
+0 | 0000 0000 |
-0 | 0000 0000 |
练习计算:25 - 32
转化成25+(-32)
25 | -32 | |
原码 | 00011001 | 10100000 |
反码 | 00011001 | 110111111 |
补码 | 00011001 | 11100000 |