计算机系统基础笔记
属于是一个手忙脚乱的临时更新了,因为发现自己确实啥都不会了。这篇暂时会一改我别的笔记风格,不会有任何章法,仅仅是按照我不会的程度和考试的紧迫程度进行一个相对凌乱的记录。
比较完整的请见🍄神的csapp笔记
第二章 信息的表示和记录
2.4 浮点数
2.4.2 IEEE浮点表示
凌乱之余好歹还是保持目录结构的完整性
IEEE浮点标准使用$V=(-1)^s\times M\times 2^E$来表示一个数
- 符号 $s$决定这个数是正数还是负数,$s=1$就是负数,$s=0$就是正数。
- 尾数 $M$是一个二进制小数,它的范围是$1\sim 2-\varepsilon$,或者是$0\sim 1-\varepsilon$。
- 阶码 $E$对浮点数加权,这个权是2的$E$次幂(可能是负数)。
将浮点数的位表示划分为三个字段,分别对这些值进行编码(注意是编码,而不是就是这些数) - 一个单独的符号位$s$直接编码符号$s$。
- $k$位的阶码字段编码阶码$E$。
- $n$位小数字段编码尾数$M$。
根据$\rm exp$的值,被编码的值可以分为三种不同的情况:
- 规格化的
这是最普遍的情况,即$\rm exp$的位即不全为0,也不全为1时。此时:- $E= {\rm exp}-Bias,Bias=2^{k-1}-1$(单精度Bias为127,双精度为1023)
- $M=1.f_{n-1}f_{n-2}\cdots f_0$,小数点在最高有效位的左边
- 非规格化的
- $E=1-Bias$
- $M=0.f_{n-1}f_{n-2}\cdots f_0$
- a.
两个非常大的数相乘,或者除以0,会产生$\infty$。$s=1$表示$-\infty$,$s=0$表示$\infty$。
b.
运算结果不是实数或无穷如$\sqrt{-1}$或$\infty -\infty$,表示为NAN。
2.4.6 C语言中的浮点数
从int
转为float
:会舍入,不会溢出
从int
转为double
:不会舍入,不会溢出
从float
转为int
:会舍入,会溢出
从float
转为double
:不会舍入,不会溢出
从double
转为float
:会舍入,会溢出
从double
转为int
:会舍入,会溢出
关于大端序和小端序
计算机系统基础笔记
https://heyewuyue1.github.io/2021/11/19/csapp/