放弃不难,但坚持一定很酷!
一、数据的表示
(一)进制的转换
R进制转十进制
十进制转R进制
十进制转R进制,就是对十进制数除R取余,最后对余数取倒序
二进制转八进制与十六进制
- 二进制转八进制:从右至左,每3个二进制位对应1个八进制位。对于二进制数10001110,二进制的110对应八进制的6;二进制的001对应八进制的1;而此时只剩下两位10,那么在最前面补0为010,对应八进制的2。所以该二进制数10 001 110就对应八进制数216
- 二进制转十六进制:从右至左,每4个二进制位对应1个十六进制位。对于二进制数10001110,二进制的1110对应十六进制的E(14);二进制的1000对应十六进制的8;如果不满四位,与转八进制一样,在最前面补0(补满4位即可)。在十六进制中,A=10,B=11,C=12,D=13,E=14,F=15
(二)原码反码补码移码
机器数
- 即一个数在计算机中的二进制表示形式。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1
- 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。这里的 00000011 和 10000011 就是机器数
真值
- 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值
- 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1
原码
- 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。比如如果是8位二进制:
- [+1]原 = 0000 0001
- [-1]原 = 1000 0001
- 因为第一位是符号位, 所以8位二进制数的取值范围就是:
- [1111 1111 , 0111 1111]即[-127 , 127]
反码
- 正数的反码是其本身
- 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
- [+1] = [00000001]原 = [00000001]反
- [-1] = [10000001]原 = [11111110]反
补码
- 正数的补码是其本身
- 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1)
- [+1] = [00000001]原 = [00000001]反 = [00000001]补
- [-1] = [10000001]原 = [11111110]反 = [11111111]补
移码
- 移码是在补码的基础上,对于符号位进行取反
- [+1] = [00000001]原 = [00000001]反 = [00000001]补=[10000001]移
- [-1] = [10000001]原 = [11111110]反 = [11111111]补=[01111111]移
机器字长为n时各种码制表示的带符号数的范围
- 原码和反码表示的范围是一样的,并且是对称的
- 补码和移码表示的范围是一样的,它可以比原码、反码表示的范围要多1(原因就在0这个位置)
| 码制 | 定点整数 | 定点小数 |
|---|---|---|
| 原码 | - (2^(n-1)-1) ~ + (2^(n-1)-1) | - (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
| 反码 | - (2^(n-1)-1) ~ + (2^(n-1)-1) | - (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
| 补码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) |
| 移码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) |
(三)浮点数运算
浮点数的概念:浮点数即科学计数法,如1000=1X10^3; 其中,1为尾数,10为基数,3为指数浮点数的运算:当两个指数不等的浮点数相加时,计算机会把低阶浮点数的指数转化为高阶浮点数的指数,如:1.0X10^3+1.19X10^2,计算机会将1.19X10^2转化为0.119X





最低0.47元/天 解锁文章
1752

被折叠的 条评论
为什么被折叠?



