网站建设运用软件外汇交易平台

✨ 个人主页:在线OJ的阿川
💖文章专栏:C语言入门到进阶
🌏代码仓库:
写在开头
现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论
目录
- 1.原码反码补码
- 2.大小端
- 3.浮点数二进制
1.原码反码补码
数字在计算机当中存储有三种表示方式:原码、反码、补码,但在内存空间中储存的都是数字的补码。
三种表示方法有符号位和数值位两部分,如下图所示:
正数的原码、反码、补码相同;负数的补码如下图所示:
补码可以直接按位取反加1直接变成原码,按位取反符号位不动
使用补码的原因:补码可以将符号位和数值域统一处理,加法和减法也可以统一处理(CPU上只有加法器),此外补码与原码还可以相互转换,运算过程是相同的,不需要额外的硬件电路
2.大小端
存储模式中主要分为大端和小端。
大端存储模式:将数据的低位保存到内存中的高地址,数据的高位保存到内存当中的低地址。
小端存储模式:将数据的低位保存到内存中的低地址,将数据的高位保存到内存的高地址。
在Visual Studio 2022中默认小端模式。
使用大小端存储模式的原因:因为在计算机中以字节为单位,每个地址单位都对应着一个字节,一个字节为8个bit,但是在C语言当中除了8个bit的Char之外,还有16个bit的short型、32个bit的int型。此外,对于位数大于8位的处理器,例如12位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题。
3.浮点数二进制
根据电气和电子工程协会国际标准IEEE754,任意一个二进制浮点数都可以表示以下形式:
对于32位浮点数而言,物理储存空间如下:
对于64位浮点数而言,物理储存空间如下:
S为0则代表为正数,S为1则代表为负数。
E为一个无符号整数。由于科学计数法当中的E可以出现负数,所以国际标准规定存入内存时E的真实值必须再加上一个中间数。对于32位机器而言,中间数为127,对于就是64机器而言,中间数为1023。
M大于等于1,默认情况下小于二,所以为储存更多的数据,保留更高的精度,会去掉整数部分进行储存,再根据E的情况进行相应添加。
4. 夹带私货
若你能看到看到这篇文章且能看到这,则说明你我有缘,留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强
好的,到此为止啦,祝您变得更强
道阻且长 行则将至 |
---|
个人主页:在线OJ的阿川![]() ![]() |