从真值到机器数
**真值:**现实世界中的数据,使用+/-表示数据的正负,采用十进制表示数据的值。
现实世界中数据的分类:
**现实世界数据表示:**一般形式和科学计数法
机器中的数据:在机器中以固定位数的byte位置,每个位置以0/1存储的数据
从真值到机器数:
例:真值
整数:12、-967
小数:39.12、-0.000000098、-32.102388
科学计数法:12X10^0、-0.33333X10^-2
如何把上述真值转化为机器数呢?
- 如何解决正负号的表示问题,使用一位byte位置即可表示+/-两种情况
- 如何把真值的整数和小数的数值部分进行表示。整数数值部分采用除以2取余数的方式(把余数按照从下到上,byte位置为从右向左的方法排列进去),小数分为整数数值部分和小数数值部分,如果直接通过除2取余的方式(小数部分乘2,取整)存储在内存中,将无法区分(或者需要额外的条件)那些部分是小数的整数数值部分,那些部分是小数的数值部分。故需要新的方式表示小数点的位置。
- 小数点的位置采用约定其位置的方式进行表示,即小数类型的真值要转化为-0.32102388X10^2的科学计数法的形式
- 科学计数法表示十进制数据的三个要素:符号+/1,小数部分,阶次部分。
总结:
- 真值经过整理后需要表示的数据有:整数、科学计数法表示的小数
- 机器表示数据的byte位是固定的(与CPU的处理数据的位数相关)
- 正负号采用一位byte位置即可表示
- 机器中的定点数和浮点数用来确定小数点的表示问题
- 先把真值转化为机器中的定点数或者浮点数,再对齐进行原码、反码、补码的表示。
- 机器中的数值采用补码的形式进行表示
补码的计算
以8位byte计算
-123 = 2^8 - 0111 1011B
= 1 0000 0000 - 0111 1011
= 1 0000 0000
-0 0111 1011(同或)
------------------
0 1000 0100+1
0 1000 0101
两个数相加(异或)