本节书摘来自华章计算机《计算机系统:核心概念及软硬件实现(原书第4版)》一书中的第3章,第3.7节,作者:[美] j. 斯坦利·沃法德(j. stanley warford)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
二进制数只可能是两个数值之一。在机器层上,计算机以二进制形式存储信息。位是二进制数字,不是0就是1。非负整数使用无符号二进制表示。最右位是1的位置,它左边的一位是2的位置,再左边一位是4的位置,以此类推,每左边一位的位置值都是前一位位置值的两倍。有符号整数采用补码表示,其中第一位是符号位,剩余的位决定该数的数值大小。对于正数来说,补码表示与无符号表示相同;而对于负数来说,它的补码可以通过对应正数的反码加1得到。
每个二进制整数,无论有符号还是无符号,都有表数范围,这是由内存单元的位数决定的。单元的位数越小,表数范围就越有限。进位位c用来标识无符号整数是否超出表数范围,而溢出位v用来标识补码表示的数是否超出表数范围。二进制整数的运算包括add、and、or和not。asl表示算术左移,实际上是对一个二进制值乘以2;而asr表示算术右移,是对一个二进制数除以2。
十六进制数系统,基数为16,提供了一种简洁的表示位模式的方法。十六进制的16个数字是0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f。一个十六进制数字表示4位。美国信息交换标准代码,简称ascii,是一种存储字符的常见编码方式。它是一种7位编码,可以表示128个字符,包括英语字母表的大小写字母、十进制数字、标点符号和不可打印的控制字符。
浮点数的存储单元包括3个字段:1位的符号字段、指数字段和尾数字段。除了特殊数值外,数字以二进制科学计数法方式存储,二进制小数点左边的隐藏位假定为1。指数以余码方式存储。4个特殊值是零、无穷大、nan和非规格化数。ieee 754标准将指数和尾数字段的位数定义为单精度8位和23位,双精度11和52位。
各个抽象层次的基本问题是待处理信息的形式与表达它的语言之间的不匹配。机器语言书写的程序处理位,高级语言书写的程序处理数字和记录这样的对象。无论程序写在哪个层次上,信息必须装进某种语言能够识别的形式中。将信息和语言进行匹配是所有抽象层次上的基本问题,是解决问题的建模过程中近似产生的根源。