csapp学习笔记一----信息表示与处理

信息表示与处理

这一章节的重要点是掌握数据在的存储形式,特别是浮点数的存储原理。

小端与大端表示法

小端表示法即将字节的低位保存到内存的低地址,字节的高位保存到内存的高地址

大端表示法则相反,字节的高位保存在内存的低地址

注意目前大多Intel机器都采用小端模式

字符串表示

注意C语言字符串是ASCII编码,而ASCII编码具有平台独立性,因为其字节顺序一定,始终是从地位地址开始存起

逻辑运算与位运算

逻辑运算符:||,&&,!

位运算:|,&

移位运算:>>

不要把逻辑运算与位运算弄混,

注意a<<b,当该操作数b为负或大于等于左操作数宽度时行为是未定义的

整数编码

  • 原码:原码是符号数+其余位表示数
    • 比如-2:10000010
  • 反码:正数同原码,负数符号位不变,其余位取反
  • 补码:正数同原码,负数符号以外的位数取反加一

浮点数

IEEE浮点数表示

V = (-1)^s x M x 2^E

s符号是负数标志位

M尾数是二进制小数

E是阶码
在这里插入图片描述

以float格式为例

[30-31]位就为负数标志位,当其为一的时候就表示其为负数;[23-30]就是表示浮点数的阶码;[0-22]是表示浮点数的尾数,其具体的解释关系见下文

可以看到其正负数辨别方式与补码不同

规格数与非规格数

在这里插入图片描述

浮点数表示有三种解释形式

  • 一是规格化形式,对于该形式的解释方式如下

s : (-1)s

E: E = e - Bias

M: M = 1+f

  • 另一种是非规格化形式

S: (-1)s

E: E = 1 - Bias

M: M = f

  • 还有一种是特殊值形式

特殊值形式是当阶码全为1或小数域全为0的形式

之所以会分为三种解释形式是为了能够使得数值的增加能够自然过渡

浮点数的精度取决于尾数的位数,数值范围取决于阶码的位数

指数位小,NaN更多,所以其能表示的实数值就更少了

舍入

向偶数舍入是默认方式

强制类型转换规则
  • 从int转换为float:因为float能表示的数字范围大于int,所以不会溢出,但因为float有一定的精度限制,所以可能被舍入

  • int,float转换为double:因为double有更大的范围以及很高的精度,所以不会发生溢出也不会发生舍入

  • float,double转Int:值可能会向0舍入

  • int,float转换为double:因为double有更大的范围以及很高的精度,所以不会发生溢出也不会发生舍入

  • float,double转Int:值可能会向0舍入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值