深入理解计算机系统(第3版) 第二章 信息的表示和处理

1.二值信号

现代计算机存储和处理的信息以二值信号表示

这些微不足道的二进制数字,又称为位(bit),形成了数字革命的基础

 

2.信息存储

大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单元,而不是访问内存中单独的位(bit)。

机器级程序将内存视为一个非常大的字节数组,称为虚拟内存,内存的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能地址的集合就称为虚拟地址空间,这个虚拟地址空间只是一个展现给机器级程序的概念性映像。

 

3.指针

指针是C语言的一个重要特性。它提供了引用数据结构(包括数组)的元素的机制。

与变量类似,指针也有两个方面:值和类型。

它的值表示某个对象的位置,而它的类型表示那个位置上所存储对象的类型(比如整数或浮点数)。

 

4.字数据大小

每台计算机都有一个字长(word size),指明指针数据的标称大小。

因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小,也就是说,对于一个字长为w的机器而言,虚拟地址大小的范围为0~2**w-1,程序最多可访问2**w个字节。

32位字长限制虚拟地址空间为4千兆字节(4GB),约4*10**9字节,64位字长可使用的虚拟地址空间为16EB,约1.84*10**19字节。

大多数64位机器也可以运行为32位机器编译的程序,这是一种向后兼容。

5.寻址和字节顺序

对于跨域多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在内存中如何排列这些字节。

在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址。

排列表示一个对象的字节有两个通用规则:大端法(最高有效字节在最前面)、小端法(最低有效字节在最前面),如下图,

 

6.C语言中的位级运算

C语言的一个很有用的特性就是它支持按位布尔运算。

布尔运算包括:与(AND  &)、或(OR  |)、非(NOT  ~)

返回按位运算的结果,运算的值不同,结果也不同

 

7.C语言中的逻辑运算

逻辑运算包括:与(AND  &&)、或(OR  ||)、非(NOT  !)

运算时与布尔运算相似,但是布尔运算是以一个位来运算,而逻辑运算以每个运算的对象为一个单一的值(True/False)再进行运算,并返回True/False

 

8.C语言中的位移运算

比如位x,表示为:[x(n-1),x(n-2),...x(1),x(0)]

位左移:x<<k

[x(n2-k-1),x(n2-k-2),...0,0,0]

位右移:x>>k

[0,0,0,...x(n2-k-2),x(n2-k-1)]

 

第二章小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值