计算机组成原理——数据的表示和运算2
码距:任意两个码字之间最少变化的二进制位数,
码距越大,检错,纠错能力越强(一个编码方案中,合法码字间的最小距离)
若码距为2,有检错能力,若码距大于等于3,可能有纠错能力
码字间的距离:两个码字之间有几个位不同
奇偶校验:在信息位的首部或尾部添加一个奇偶校验位,
奇校验:保证校验码中1的个数为奇数,
偶校验:保证校验码中1的个数为偶数。
海明码、循环冗余校验(crc)码
为什么要采用二进制来表示数据?
0正1负
从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。
从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)从逻辑上来说,由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。
计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。
计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。而二进制表示小数时只能够用1(2)的和的任意组合表示,即使字长很长,也不可能精确表示出所有小数,只能无限逼近。例如0.1就无法用二进制精确地表示。
用移码表示浮点数的阶码有什么好处?
移码:只用于定点整数的表示,通常用于表示浮点数的阶码。
x=+1010110 [x]移=11010110
移码特点:
(1)符号位0负1正
(2)同一数值的移码和补码除符号位相反外,其他各位相同
(3)移码中0的表示也唯一,表示为100000…
原码转移码:
正数时,符号位+原码
x=+1010110 [x]移=11010110
负数时,移码为补码符号位取反
x=-1010110 [x]移=00101010
移码的两个好处
①浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小更方便。
②检验移码的特殊值(0和max)时比较容易。阶码以移码编码时的特殊值如下。0:表示指数为负无穷大,相当于分数分母无穷大,整个数无穷接近0,在尾数也为0时可用来表示0:尾数不为零表示未正规化的数。max:表示指数正无穷大,若尾数为0,则表示浮点数超出表示范围(正负无穷大);尾数不为0,则表示浮点数运算错误