深入理解——第二章学习总结

第一节 信息存储

一、十六进制表示法

0x0X开头的数字常量为十六进制

二进制-十六进制相互转换

※一种特殊情况

要表示的数字常量x=2的n次方时,n=i+4j,且0≤i≤3时,开头的十六进制数字为1(i=0)、2(i=1)、4(i=2)、8(i=3),后面跟随着j个十六进制的0。这里的j是代表着每四位二进制位对应的十六进制位,而i的范围是因为十六进制中每一位的范围是0-F,最多能容纳到8。

二、寻址和字节顺序

小端法和大端法

  • 小端法:最低有效字节在前面——“高对高,低对低”
  • 大端法:最高有效字节在前面

以0x01234567为例:

最高有效位在最前,所以为01 23 45 67
小端法:
最低有效位在最前,所以为67 45 23 01

三、位运算

常用运算符号:
与: &
或: | 非: ~ 异或:^
  • 位运算:位向量按位进行逻辑运算,结果仍是位向量(区别于逻辑运算)

 

四、逻辑运算

逻辑运算符
与:&&
或:|| 非:! 
  • 逻辑运算的计算结果:

所有非零参数都代表TRUE,0参数代表FALSE

逻辑运算和位运算的区别

1.只有当参数被限制为0或1时,逻辑运算才与按位运算有相同的行为。
2.如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对后面的参数求值。

五、移位运算

右移分为逻辑右移算术右移

  • 逻辑右移:

    在左端补k个0,多用于无符号数移位运算

  • 算术右移:

    在左端补k个最高有效位的值,多用于有符号数移位运算。

第二节 整数表示

一、补码编码

  • 补码的最高位是表示符号位,解释为负权,“权重”为-2的(w-1)次方,即无符号表示中的权重的负数。符号位为1,表示值为负,符号位为0,表示值为非负
  • 补码的范围:-2^(w-1)~2^(w-1)-1,即|TMin|=|TMax|+1
  • 无符号数编码(U)和补码(T):UMax = 2 TMax + 1

二、有符号数和无符号数的转换

有符号数换为无符号数
  • 非负数——保持不变
  • 负数——加上2^w,转换成大正数

    无符号数换为有符号数

    以2的w-1次方为界限:

  • 小于它——保持不变
  • 大于它——减去2^w,转换为负数值

三、扩展

零扩展

多用于无符号数转换为一个更大的数据类型。

只需在开头加上0即可。

符号扩展

多用于补码数字转换

最高有效位是什么,就添加什么。

四、截断

将一个w位的数截断为k位数字时,就会丢弃高w-k位。

对于无符号数来说,就相当于 mod 2的k次幂

对于有符号数来说,先按照无符号数截断,然后再转化为有符号数

第三节 整数运算

整数运算即mod 2^w。

1.补码的非运算

对于范围在[-2^(w-1),2^(w-1))中的x,补码的非运算有如下两种情况:

x=-2^(w-1)时,为-2^(w-1)

x>-2^(w-1)时,为-x

2.求位级补码非
  • 对每一位求补,再对结果+1
  • 设k为最右面的1的位置,将k左边的所有位取反。

乘以常数

1.常数为2的k次幂的时候

直接左移k位即可。

2.常数不是2的整数次幂的时候

将常数C表示为2的几个整数次幂的和,结合移位运算和加法运算。

除以2的k次幂

1.无符号数——逻辑右移

无符号数除以2的k次幂,就等同于对其逻辑右移k位。

2.补码——算术右移

  • x≥0时,除以2的k次幂等价于将x算术右移k位
  • x<0时,先将x加上(2^k)-1,再算术右移k位

第四节 浮点数

一、二进制小数

小数的二进制表示法只能表示那些能够被写成x X (2^y)的数,其他的值只能近似的表示。

权重

以小数点为界:

左边第i位,权重为2的i次幂 右边第i位,权重为1/2的i次幂

二、IEEE浮点表示

IEEE浮点标准:

用V=(-1)^s X 2^E X M 来表示一个数: 符号:s决定这个数是正还是负。0的符号位特殊情况处理。 阶码:E对浮点数加权,权重是2的E次幂(可能为负数) 尾数:M是一个二进制小数,范围为1~2-ε或者0~1-ε(ε=1/2的n次幂)

编码规则:

单独符号位s编码符号s,占1位
k位的阶码字段exp编码阶码E n位小数字段frac编码尾数M(同时需要依赖阶码字段的值是否为0)

两种精度

  • 单精度(float),k=8位,n=23位,一共32位;
  • 双精度(double),k=11位,n=52位,一共64位。

三种被编码情况

  • 规格化的
  • 非规格化的
  • 特殊值

三、舍入

1.向偶舍入

即:将数字向上或向下舍入,是的结果的最低有效数字为偶数。

能用于二进制小数。

2.向零舍入

把整数向下舍入,负数向上舍入。

3.向下舍入

正数和负数都向下舍入。

4.向上舍入

正数和负数都向上舍入。

向偶舍入可以得到最接近的匹配,其余三种可用于计算上界和下界

四、浮点运算

1.浮点加法

  • 浮点加法是可交换的
  • 浮点加法不具结合性
  • 大多数值的浮点加法都有逆元,除了无穷和NaN。
  • 浮点加法满足单调性

2.浮点乘法

  • 浮点乘法是可交换的
  • 浮点乘法不具有结核性
  • 浮点乘法的单位元为1.0
  • 浮点乘法在加法上不具备分配性
  • 在一定条件下满足单调性

 

 

所遇到的问题:

1.p35中的题2.13

  在做这道题时,第一问很好理解,但是第二问我怎么都做不出来,后来查看答案后也不是很好理解。后来我用了数电上的方法计算,我发现bis 函数即为x&y,而bic函数即为x&~y,这样就很好理解了。

2.p51中的题2.23

 在进行有符号的算术右移时,我忽略了十六进制到二进制的转换,题中有句提示说:记住十六进制数字8到F的最高有效位为1。这样我们计算时,只要在右移时注意大于7的数字,即在前面添加二进制的1,换为十六进制即为F。

3.p52中的题2.24

 开始时我并不能很好的理解截断的意思,做完这道题后我发现对于k位的截断数值来说,它的范围在-2^(k-1)~2^(k-1)-1之间,而且要注意补码的截断值仍然用补码来表示。

 

你可能感兴趣的:(深入理解——第二章学习总结)