概述
第2章 信息的表示和处理·二
关键词:信息存储,逻辑运算,进制转换,C语言,信息的表示和处理
无符号(unsigned)编码是基于传统的二进制表示法的,表示大于或者等于零的数字。
二进制补码(two's-complement)编码是表示有符号证书的最常见的方式,有符号整数就是为正或者为负的数字。
浮点数(floating-point)编码是表示实数的科学计数法的以二为基数的版本。
2.1 信息存储
大多数计算机使用8位的块,或叫做字节(byte),来作为最小的可寻址的存储器单位,而不是访问存储器中单独的位。机器级程序将存储器视为一个非常大的数组,称为虚拟存储器(virtual memory)。存储器的每个字节都由一个唯一的数字来标示,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间(virtual address space)。这个虚拟地址空间只是一个展现给机器级程序的概念性映像(image)。实际的实现使用的是随机访问存储器RAM、磁盘存储、特殊硬件和操作系统软件的结合,来为程序提供一个看上去统一的字节数组。
编译器和运行时系统的一个任务就是将这个存储器空间划分为更可管理的单元,来存放不同的程序对象(project object),也就是,程序数据、指令和控制信息。有各种机制可以用来分配和管理程序不同部分的存储。这种管理完全是在虚拟地址空间里完成的。
1 十六进制表示法
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
二进制 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
十六进制 | 8 | 9 | A | B | C | D | E | F |
十进制 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
二进制 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
进制转换不再细写。自己灵活掌握。
2 字
每台计算机都有一个字长,指明整书和指针数据的标称大小(nominal size)。因为虚拟地址是以这样的字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。对于一个字长为n的机器而言,虚拟地址的范围为0-(
2^n
)-1,程序最多方位
2^n字节。
对于任何数据类型T,声明
T *P;
表明p是一个指针变量,指向类型T的一个对象。
假设一个类型为int变量x的地址为0x100,也就是说,地址表达式&x的值为0x100.那么x的四字节将被存储在存储器的0x100,0x101,0x102,0x103位置。
反汇编器,是一种确定可执行程序文件所表示的指令序列的工具。
3 运算
布尔代数的逻辑运算(|是OR,&就是AND,
﹁就是NOT,^就是EXCLUSIVE-OR
)
或:p=1或q=1时,p|q=1;
且:p=1且q=1时,p&q=1;
非:p=1,﹁p=0;
异或:当p=0且q=1或p=1且q=0时,p^q=1。
整数集合,用Z来标示,形成了一个称为环的数据结构,表示为<Z,+,*,-,0,1>,其中加法为求和运算,乘法为求积运算,负号作为加法的逆运算,而0和1作为加法和乘法的单位元。布尔代数<{0,1},|,&,~,0,1>。
移位运算
x<<k,表示x向左移动k位,丢弃k个最高位,并在右端补了k个0。
2.2 整书表示
C和C++都支持有符号(默认)和无符号数,Java只支持有符号数。
二进制数到无符号数的转换:
B2Uw=所有数字乘相应的2的幂次,求和。
二进制数到有符号数的转换:
B2Tw=最高位乘以相应的2的幂次取其负值,然后和剩余的所有位上的
数字乘相应的2的幂次,求和。
2.3 小结
计算机将信息编码为位,通常组织成字节序列。有不同的编码方式用来表示整数、实数和字符串。不同的计算机模型在编码数字和多字节数据中的字节顺序上使用不同的约定。
C语言被设计成包容多种不同字长和数字编码的实现。大多数机器对整数使用二进制补码,而对浮点数使用IEEE编码。
C语言的标准规定在无符号和有符号整数之间进行强制类型转换时,基本的位模式不应该改变。在二进制补码机器上,对于一个w位的值,这种行为是由函数T2Uw和U2Tw来描述的。C语言隐式的强制转换会得到许多程序员无法预计的结果,常常会程序错误。
由于编码的长度有限,计算机运算与传统整数和实数运算相比,具有非常不同的属性。当超出表示范围时,有限长度能够引起数值溢出。当浮点数非常接近0.0时,从而转换成0时,浮点数也会下溢。
参考文献
Bryant R E, 布赖恩特, O'Hallaron D, et al. 深入理解计算机系统[M]. 中国电力出版社, 2004.
最后
以上就是寂寞御姐为你收集整理的信息的表示和处理·二的全部内容,希望文章能够帮你解决信息的表示和处理·二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复