《深入理解计算机系统》-2.1信息存储

前言:无符号编码:基于传统的二进制编码,表示不小于零的数;补码编码:有符号整数的最常见表达方式,可正可负;浮点数编码:实数的科学记数法的以2为基数。其中整数编码的表达是精确的,而浮点数编码是近似的。

2.1信息存储

字节:8个位组成的块,是最小可寻址的内存单元,大小单位。常用数据的大小如下图所示

虚拟内存:机器级程序将内存视为一个非常大的字节数组。内存的每个字节有一个唯一的数字标识,称之为地址,所有可能的地址集合就被成为虚拟地址空间

2.1.2字数据大小

字长:每一个计算机都有一个字长,指明指针数据标称的大小。故字长决定了虚拟空间的大小,如果一位字长为w位的机器而言,我们平常所说的32位。64位指的是字长32或64位。

2.1.3寻址和字节顺序

小端法:最低有效字节在最前面的方式;大端法:最高有效字节在最前面的方式。不同的机器可能使用不同的方式,大多数Intel兼容机只使用小端法,Android和IOS都只使用小端法。

字节顺序带来的问题:

a.不同机器间通过网络传输2进制数据时,发送方和接收方使用方式不一致。解决方法:在网络应用程序的代码编写中建立关于字节顺序的规则,即发送方将其转换成网络标准,接收方将网络标准转换为自身内部表示。

b.在检查机器级程序时,阅读表示整数数据的字节序列时字节顺序很重要。

c.编写规避正常的系统类型的程序时。

2.1.9C语言中的移位运算

对于右移运算来说,机器存在两种右移运算:逻辑右移和算术右移。逻辑右移是在左端补K个0,算术右移是在左端补k个最高有效位的值。由于C语言中没有明确规定哪一种是逻辑或算术右移,故存在可移植性问题,但是几乎所有的机器都对有符号数使用算术右移。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值