本文中提到的一切都基于intel x86Cpu,开发环境基于windows 10 vs2019。 这个博客需要读者自己理解十进制、十六进制和二进制之间的转换。 本文不介绍转换过程,需要知道详细过程的信息来寻找相关资料。
首先简要介绍计算机中数据存储的基础知识。 具体内容将在大学课程《计算机组成原理》中详细介绍。 计算机中对数数据的存储有C/C中的char、short、int、long、longlong和C/C中的float、double两种形式。
定点数中char、short、int、long、longlong的记忆原理都相同,只是长度不同,所以选择int型详细介绍。 浮点中float,double的原理也一样。
这里,定点数和浮点数都是最高位比特表示编码比特(0表示正数1表示负数)的余位表示数值,字节是反转存储器数(小端模式),即高字节在左低字节右边。
打分数
定点数比较简单,计算机中存储了真值,计算机以4字节(32位)存储了int变量。 示例: int value=1 value转换为二进制00000000000000000000 00 00 01。 为了便于写,我们以十六进制形式写了0000001。 因为计算机是闪回存储,所以计算机记住了01 00 00 00。
浮点数字

以下是浮点浮点浮点浮点内存。 C/C中的浮点存储器标准基于IEEE754,具体内容是数值,可以用科学计数法来表现。 也就是说,可以记述如下。
A * 2^n
这里,a是尾数,2是基数,n是指数。
因为基数是2,所以所有的a都可以写大于1小于2,也就是1.xxxx*2的n次方,所以为了节省空间,计算机不用记住整数部分的1。 所有的浮点都有它,我们转换它的时候加1就行了。 n可以是正数也可以是负数(float需要加127,double需要加1023 )。