计算机中的信息表示
原码: 用最高位表示该数的正负,其余各位表示数的绝对值。
反码: 正数与源码相同,负数符号位不变,数值部分按位取反
补码: 正数与源码相同,负数符号位不变,数值部分按位取反+1
移码: 移码常用来表示浮点数的阶码。移码就是在真值上加上一个常数,这个常熟通常取2的N次方。
数值
在计算机中,为什么采用二进制来表示数据
从可行性来说,采用二进制,只有0和1两个状态,能够表示0,1 两种状态的电子器件很多,如开关的接通和断开,晶体管的导通和截止,电位电平的高与低等,都可以表示0,1两个数码。使用二进制,电子期间具有实现的可行性。
从运算的简易性来说,二进制的运算法则少,运算简单,使计算机运算器的硬件结构大大简化。
从逻辑上来说,由于二进制0和1正好和逻辑代数的假和真相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。
计算机在字长足够的情况下能够精确地表示每个数吗
计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。
而二进制表示小数时只能用1/(2^n)的和的任意组合表示,即使字长很长,也不能精确表示出所有小数,只能无限逼近。
字符
由于计算机内部只能识别和处理二进制代码,所以字符都必须按照一定的规则用一组二进制编码来表示。
ASCII码
目前国际上采用的是一种7位二进制编码的ASCII码,一共128个字符
定点数
带符号的定点小数:约定所有数的小数点的位置固定在符号位之后
带符号的定点整数:约定所有数的小数点的位置固定在最低数位之后。
无符号定点整数:约定所有数的小数点的位置固定在最低数位之后。
浮点数
小数点的位置可按需要浮动
表示
阶码:用整数形式表示,指明小数点在数据中的位置,决定浮点数的表示范围。
尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度。
浮点数的真值:
R为阶码底,默认为2;E为阶码;M为尾数
规格化
对于同一个小数,我们可以有多种表示方法,如:
规格化表示规定,尾数最高有效位为1。
尾数最高有效位为1,隐藏,并且隐藏在小数点的左边。
左规
当浮点数运算的结果为非规格化时要进行规格化处理,将尾数左移一位,阶码减1.
右规
当浮点数运算结果尾数出现溢出时,将尾数右移一位,阶码加1.
IEEE标准
32位浮点数的标准格式为:(阶码8位,尾数23位)
64位浮点数的标准格式为:(阶码11位,尾数52位)
、
运算
定点数的加减运算
数用补码表示,符号位参加运算
定点数的乘除法
原码一位乘法:
符号:对符号位进行异或
每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。
补码一位乘法:
区别
定点数的除法
原码恢复余数法
原码不恢复余数法
补码不恢复余数法
浮点数加减运算
对阶
使两数阶码相等(小数点实际位置对齐,尾数对应权值相同)。
小阶向大阶对齐。
小阶阶码增大,尾数右移
校验
奇偶校验
增加一个校验位,使1有奇数个
海明校验
多重奇偶校验,可以确定错位的位置
循环冗余校验
校验码除以某约定代码,能除尽则表明代码正确,否则可用余数指明出错位置。
将待编码的K位有效信息M(x)左移r位,得M(x)·xr,空出r位,以拼装将求得的r位余数。
选取一个r+1位的生成多项式G(x),对M(x)·xr做模2除。
将左移r位的待编码信息,与余数R(x)做模2加,拼接为包含有效信息在内的CRC校验码。
算数逻辑单元
在计算机中,运算器承担了执行各种算术和逻辑运算的工作,运算器由算术逻辑单元 (Arithmetic Logic Unit, ALU)、累加器、状态寄存器和通用寄存器组等组成。ALU的基本功能包 括加、减、乘、除四则运算,与、或、非、异或等逻辑运算,以及移位、求补等操作。
一位全加器
全加器(FA)是最基本的加法单元,有加数爲、加数及与低位传来的进位
串行加法器
在串行加法器中,只有一个全加器,数据逐位串行送入加法器中进行运算。
并行加法器
并行加法器由多个全加器组成,其位数与机器的字长相同,各位数据同时运算。
ALU
ALU是一种功能较强的组合逻辑电路,它能进行多种算术运算和逻辑运算。由于加、减、乘、 除运算最终都能归结为加法运算,因此ALU的核心首先应是一个并行加法器,同时也能执行“与” “或” “非”等逻辑运算。