数据的机器级表示与处理
一些要明白的事情
一、在计算机系统内部,所有信息都是用二进制进行编码
的也就是。说计算机内部采用的是二进制表示方式。这样做的原因是什么?
1.二进制只有两种基本状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位,而制造有两个稳定状态的物理器件要比制造有多个稳定状态的物理器件容易得多。例如,用高、低两个电位,或用脉冲的有、无,脉冲的正、负极性都可以很方便、很可靠的表示“0”和“1”。
2. 二进制编码、计数和运算规则都很简单,可用开关电路实现。
3. 两个符号“0”和“1”正好与逻辑命题的两个值“假”和“真”对应,为计算机中实现逻辑运算和程序中实现逻辑判断提供了便利条件,特别是能通过逻辑门电路方便的实现计算算数运算(这一点为什么你可以思考一下)。
二、为什么引入八进制、十六进制
八进制、十六进制的引入是为了便于阅读和书写。它们与二进制对应关系简单容易表示。在屏幕或其他设备上显示时,转换为八/十六可以缩短长度。
三、怎样确定一个数值数据
1.进位计数制
2.定、浮点表示(解决小数点问题)定点数有定点整数和定点小数,浮点数用一个定点小数和定点整数来表示
3.定点数编码(解决正负号问题)
以上三点缺一不可
关于数制
1.R进制转换成十进制
按权展开
2.十进制化为二进制
整数部分:除基取余,上右下左
小数部分:乘基取整,上左下右
3.二、八、十六进制转换
3.1八进制 ⇒ 二进制
把八进制数每一位改写成等值的3位二进制数
3.2十六进制 ⇒ 二进制
十六进制数每一位改写成等值的4位二进制数
3.3二进制 ⇒ 八进制
整数部分:从低到高方向每3位用一个等值八进制数来替换,高位不足补0
小数部分:从高向低方向每3位用一个等值八进制数来替换,低位不足补0
3.4二进制 ⇒ 十六进制
整数部分:从低到高方向每4位用一个等值的十六进制数来替换,高位不足补0
小数部分:从高向低方向每4位用一个等值的十六进制数来替换,低位不足补0
定点数编码
1.定点数编码之原码
正数:符号位0,数值部分不变
负数:符号位1,数值部分不变
缺点:0不唯一,加减法不同意,符号位处理麻烦,不利于硬件涉及
2.定点数编码之移码
将每一个数值加上一个偏置常数
通常当编码位数为n时,偏置常数取2n-1或2n-1-1
我们在后面的浮点数中会用到这一概念
3.定点数编码之补码
(插一小句,离散数学中等价类的概念)
3.1真值 ⇒ 补码
正数:同原码
负数:符号位为1,数值部分各位取反,末尾加1
负数简便方法:从右向左遇到的第一个1的前面各位取反
3.2补码 ⇒ 真值
正数:同原码
负数:符号位为1,数值部分各位取反,末尾加1
负数简便方法:从右向左遇到的第一个1的前面各位取反