大约 4 分钟
title: 数据表示
1. 数据的表示
考点
- 进制转换
- 码制(原码/反码/补码/移码)
- 浮点数的表示
- 逻辑运算
1.1 进制转换
按权展开法
位权:小数点左边第一位是0,小数点右边第一位是 -1
R进制转十进制使用按权展开法
10100.01 十进制计算:10000+100+0.01=1*10^4 + 1*10^2 + 1*10^-2 二进制计算:1*2^4 + 1*2^2 + 1*2^-2 604.01 七进制:6*7^2 + 4*7^0 + 1*7^-2
短除法(除基取余法)
除到商为0截至,取余从下往上取
十进制转R进制使用短除法
十进制94转二进制
2|94 余 0 2|47 余 1 2|23 余1 2|11 余1 2|5 余1 2|2 余0 2|1 余1 0 得到的结果:1011110
十进制94转为十六进制
16|94 余14 5 余5 转换后:5EH
减法
十进制转二进制使用减法
94转为二进制 首先记住2^n的值,求2^n最大但不能超过被减数 2^6=64 2^7=128 所以 94-2^6=30 6 1 30-2^4=14 4 1 14-2^3=6 3 1 6-2^2=2 2 1 2-2^1=0 1 1 有位权就是1,没有位权就是0 6 5 4 3 2 1 0 1 0 1 1 1 1 0 结果:1011110
二进制转换八进制与十六进制
八进制:0 1 2 3 4 5 6 7 二进制:000 001 010 011 100 101 110 111
二进制转八进制:
将二进制三位分割,从最右边开始分割,左边不够三位补0
11011 分割---> 11 011 --->补0 011 011 --->转为八进制 33
八进制转换二进制:一位 对 三位
4 2 1
十六进制转换二进制:一位 对 四位
8 4 2 1
十六进制:0 1 2 3 4 5 6 7 8 9 A B
二进制:0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
1.2 码制
1.2.1 码制计算
最高位为符号位,0表示正数,1表示负数
计算机运算中,一般不用原码参与运算,一般使用补码运算
原码:最高位是符号位,其余低位表示数值的绝对值
反码:正数的反码与原码相同,负数的反码是其绝对值按位取反
补码:正数的补码与原码相同,负数的补码是其反码末为加1(符号位不变)
移码:补码的符号位按位取反
1-1=1+(-1)
源码 反码 补码 移码
+7: 0000 0111 0000 0111 0000 0111 1000 0111
-7: 1000 0111 1111 1000 1111 1001 0111 1001
1: 0000 0001 0000 0001 0000 0001 1000 0001
-1: 1000 0001 1111 1110 1111 1111 0111 1111
1-1: 1000 0010 1111 1111 0000 0000 1000 0000
1.2.2 定点正数、定点小数
练习:
100 人为规定 -4
补码求反码求原码
注意符号位
1.3 浮点数表示
N=尾数*基数^指数
运算过程:
对阶 > 尾数计算 > 结果格式化
特点:
- 一般尾数用补码,阶码用移码
- 阶码的位数决定数的表示范围,位数越多范围越大
- 尾数的位数决定数的有效精度,位数越多精度越高
- 对阶时,小数向大数看齐
- 对阶是通过较小数的尾数右移实现的
计算1.25*10^6 + 1.255*10^10
步骤:
1.对阶:低阶向高阶对齐
2.尾数计算
3.结果格式化
1.25*10^6=0.000125*10^10
0.000125*10^10 +
1.255 *10 ^10
=1.255125*10^10
练习:
浮点数能够表示的数的范围是由(
阶码
)的位数决定的。尾数:有效精度
阶符:阶码的符号位,决定是整数还是小数
数符:尾数部分的符号位
阶符:10^-2 --> 1/100 数符:-1.25*10^2
1.4 逻辑运算
1.4.1 逻辑运算符
关系运算符:
> >= < <= 优先级相同(高)
赋值符号:
== 等于 != 不等于 优先级相同(低)
算术运算符:
+ - * /
关系运算符的优先级低于算术运算符
关系运算符的优先级高于赋值运算符
逻辑变量之间的运算称为逻辑运算,二进制1 0 在逻辑上可以代表 真 假
真值表:
逻辑运算符
1.4.2 优先顺序
1.4.3 短路原则
&&、||