深入理解计算机系统学习笔记(二)

学习资料:【CSAPP-深入理解计算机系统】

二、信息的表示和处理

信息的存储

(1)Byte

(2)十六进制

【可以记住ACF快速得到其他】

(3)二进制数与十六进制数的快速转化

【借助0的个数】

(4)字长

(5)32位机器与64位机器

【大多数64位的机器做了向后兼容】

【hello32即能在32位机器上运行,又能在64位机器上运行】

【hello64只能在64位机器上运行】 

【主要在于程序是如何编译的,而不是机器的类别】

(6)不同数据类型在不同机器上占用字节 

(7)数据在内存中的排布

【大端法:最高有效字节存储在最前面,也就是地址处】

【小端法:最低有效字节存储在最前面】

【大多数intel:小端     大多数IBM/Sun:大端】

 (8)布尔运算

【位级运算】

【逻辑运算】 

 【移位运算】

【左移:右边补0】

 右移:逻辑右移 / 算术右移

 

 【有符号数:算术右移  无符号数:逻辑右移】

整数表示

(1)无符号编码

【B2U:binary to unsigned 二进制数转无符号数】

 【图形化】

       “权重”

 (2)补码

 

 【负权重】

 (3)无符号数最大值

  (4)有符号数最大值

 (5)有符号数的最小值

 (6)特殊的数值

【几乎所有机器都是用补码表示有符号数】

 (7)无符号数与有符号数之间的转化

【对于C语言来说,转化前后位模式不变,解释这些位的方式改变了】

 【在C语言中,若存在有符号数与无符号数之间的运算,则C语言会隐式的将有符号数强制转换位无符号数来执行运算】

(8)符号位扩展

 (9)截断有符号数

整数的运算

(1)无符号加法

 【C语言】判断溢出

(2)有符号加法

 溢出判断

(3)无符号数的逆元

 (4)有符号数的逆元

(5)无符号乘法

(6)补码的乘法

【需要将无符号数转成补码】 

 (7)向零舍入

(8)无符号数除法

 (9)补码的除法(除以2的k次幂)

【想要得到向零舍入的结果,需要加入偏置量,偏置量为 2的k次方-1 】

【不能推广到任何常数】

浮点数

(1)浮点数的表示(IEEE)

 (2)浮点数的表示类型 

(3)规格化 

 (4)非规格化

【表示非常接近零的数】

 (5)特殊值

 (6)舍入

【向偶数舍入,若处于舍入的正中间,只需要考虑最低有效位是偶数还是奇数

比如:1.5 -> 1 / 2      2是偶数,所以结果为2

           2.5 -> 2 / 3      2是偶数,所以结果为2 】

 

(7)浮点数的运算

【浮点数的加法和乘法都不具有结合性、浮点的乘法在加法上不具有分配性】

 (8)类型转化 

int - > float : 不会溢出,可能会舍入,无法保留精度

int / float - > double : 可以保留精度

double - > float : 发生溢出 / 舍入

float / double - > int : 向零舍入 / 发生溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值