csapp

csapp

2023年2月26日
csapp
202302, csapp

信息的表示 # 整数 # 有无符号转换 # 二进制形式不变, 解释改变 运算规则 有符号转无符号: x < 0 -> 2^k + x; x >= 0 -> x 无符号转有符号: x <= 2^(k-1) - 1 -> x; x > 2^(k-1) - 1 -> x - 2^k 正负切换 # 取反+1 小类型转大类型 # int转long, 无符号补0, 有符号补符号位 大类型转小类型 # long转int, 有符号无符号都是以二进制表示运算, 二进制截断即mod(2^k)再解释为有符号或无符号int类型 整数运算 # 无符号数加法溢出: 2^k - (x + y) 判断溢出: sum < x 有符号数 正溢出: (x + y) - 2^k 负溢出: (x + y) + 2^k 判断溢出 x >=0, y>=0, sum < 0 x <=0, y<= 0, sum > 0 乘法 二进制乘法截断后再解释为无符号数或有符号数 乘法转换为+/-, 例如 x * 14 -> x<<4 - x<<1 除法 无符号数逻辑右移, 有符号数算数右移 向0舍入 有符号数 x<0 ? ...