Back

2-信息的表示与处理2-信息的表示与处理

ICS


二、信息的表示与处理

1.信息的存储

\quad 机器级程序将内存视为一个非常大的字节数组,称为虚拟内存。所有可能地址的集合称为虚拟地址空间。

\quad 字节:信息存储的基本单元,由8个位组成,每个位为0或1。

\quad 十六进制数 :0x开头,数字0~9,字母A~F可大写可小写。

进制间的转换

\quad 对于一个字长为w的机器来说,虚拟地址的范围为0~2w−12^w-1 ,程序最多访问2w2^w个字节

\quad 32位字长限制虚拟地址空间位4GB,扩展到64位有16EB

\quad 64位机器做了向后兼容,能运行32位机器程序,32位则不能反之。

寻址和字节顺序

\quad 大端法:顺着读

\quad 小端法:以字节为单位倒着读

\quad 大多数Intel兼容机、Andriod、IOS都适用小端法,IBM和Oracle按照大端法。

位运算(返回一个数)

\quad ~取反 |或 &与 ^异或

逻辑运算(返回0x01或0x00)

\quad && 且 ||或 !非

移位运算

\quad <<左移         >>右移(分为逻辑右移和算数右移,逻辑右移直接移,算数右移高位补k个最高有效位的值。(有符号数算数右移,无符号数逻辑右移))

2. 整数 Integer

\quad Java只支持有符号整数

无符号数的编码

\quad B2U=∑i=0w−1xi∗2i\sum_{i=0}^{w-1}x_i*2^i

\quad 函数B2U是一个双射

补码编码

\quad B2Tw=−xw−12w−1+∑i=0w−2xi2iB2T_w=-x_{w-1}2^{w-1}+\sum_{i=0}^{w-2}x_i2^i

\quad 最高位xw−1x^{w-1}也称为符号位,若符号位为0则和无符号数编码表示差不多

\quad B2TwT_w也是个双射,补码的范围是不对称的 有符号数与无符号数之间的转换

\quad 强制类型转换的结果保持位值不变,只是改变了这些位的解释方式。

\quad 无符号数与补码的转换关系:

\quad U表示无符号数 对于C语言中:

\quad 若双方中同时存有无符号数与有符号数,C语言会隐式的将有符号数强制转换成无符号数来执行运算比如>和<运算。若双方都是U或都是T则用原来的处理。

数字的扩展

\quad 无符号数零扩展:在表示的开头补0

\quad 有符号数的符号扩展:扩展的数位补符号位

截断数字

\quad 直接把前k位舍弃

数值上:

\quad 截断无符号数:(相当于取模2k2^k)

\quad 截断有符号数:相当于视为无符号数处理后再转换为无符号数。

整数的运算

\quad 无符号数加法 \quad 正常:直接相加                        溢出:减去2w2^w(即为扔去溢出位)

\quad 判断无符号加法溢出:return sum>=x;(true 表示未溢出)

求反:

\quad 有符号数的加法

\quad 分为正溢出和负溢出 \quad 补码加法和无符号加法有完全相同的位级表示

取反: \quad Tmin=0x8000000

无符号乘法:

\quad 截取运行结果的低w位(x⋅y)mod2w(x·y)mod2^w

补码乘法:

\quad 与无符号乘法位级表示一样,数值上多一步转换成无符号数

\quad 乘2的幂相当于左移操作,乘常数就可以分解成移位和加法

除法

\quad 除以2的幂:

\quad 采用右移,无符号数逻辑右移,朝着向0的方向进行舍入。有符号数算数右移,也朝0舍入,所以会在移位之前加入一个偏置来修正。偏置的值等于1左移k位减1。//只有负数需要用偏置

\quad 不能推广到任意常数。

3. 浮点数

\quad 二进制小数:.后为2的负幂如(1/8)= (0.001)2(0.001)_2

IEEE浮点表示:

V=(−1)s∗M∗2EV=(-1)^s*M*2^E

\quad s为符号位;M是尾数,是二进制小数;E是阶码 \quad float 1-8-23

\quad double 1-11-52

\quad exp是无符号数

分类

\quad 规格化的值:exp不为0或255

\quad 非规格化的值:exp为0

\quad 无穷大:exp为255(全是1),frac全为0

\quad NaN:exp为255,frac不为0

表示规格化的值时:

\quad 阶码字段为以偏置形式表示的有符号整数,E=e-Bias

\quad e∈[1,254],Bias=2k−1−1e\in[1,254],Bias=2^{k-1}-1(单精度为127,双精度为1023)

\quad E∈[−126,127]E\in[-126,127] (float),E∈[−1022,1023](double)E\in[-1022,1023](double),M∈[1,2)M\in[1,2)

表示非规格化的值时:

\quad exp,s,frac全为0,表示+0,s=1,frac,exp为0,表示-0

\quad 此时M=f;E=1-Bias

特殊值: 表示无穷大

浮点数舍入

\quad 1. 向偶数舍入

\quad 向最近值进行舍入,为0.5则遵循最低有效数位是偶数

\quad 2. 向0舍入

\quad 3. 向下舍入

\quad 4. 向上舍入

\quad 浮点数运算不具有结合性与分配性,因为可能出现溢出和舍入。


LAB:

此章节后完成datalab(80.0/80.0)

2-信息的表示与处理
https://www.aki-yzh.cn/blog/2-信息的表示与处理
AuthorAki
Update dateFebruary 18, 2023
评论加载中…