之前呢,已经学习过无符号,有符号整数的表示(用补码),其实还有2个类型我没有说过,就是字符型和字符串型,主要我觉得这2种类型比较简单,看1会说就明白。字符型是用的阿斯卡码表示的,字符串型也一样,只是C的字符串呢,在结尾有个00。这个00就是判断字符串是否结束!引用字符串的变量其实就是代表字符串的首地址,然后呢依次检查下去,只要遇到了00就代表此字符串结束了。
IEEE浮点表示法
IEEE浮点数表示:符号位(1位) + 指数位置(8位) +尾数位(23位)
1:将要表示的浮点数转化为二进制表示。比如:
123456.0f = 11110001001000000
2:然后移动小数点到最高位只有1位的1。比如:
1.1110001001000000 一共移动了16位
3:因为小数点每向左移动一位就相等于以2为底的指数加1.所以:
1.1110001001000000 * 2^16
4:指数部分呢一共是需要8位,把十进制的指数转化为二进制时先加上127(为什么要加127是因为它把127当着0.因为移位不只是往一边移,8位中间点正是7F,7F就是十进制的127).例如:
16+127=143 = 10001111
5:12345.0f由于是正数,所以符号位为0.(注意:尾数位少了1个1,是因为最高位肯定是1,所以为了节约内存考虑)所以:
符号位(1位) + 指数位置(8位) +尾数位(23位)
0 10001111 11100010010000000000000
然后!再组合起来!01000111111100010010000000000000
然后!再4位1组!! 0100 0111 1111 0001 0010 0000 0000 0000
然后! 再转化成16进制 4 7 F 1 2 0 0 0
然后!再组合起来!47F12000
然后!再倒过来! 0020F147(为什么要倒过来是因为VC内存排列是高位对高位,低位对低位)
然后!再进行检验!:
这样!我们就知道调试浮点数的时候,为什么内存里面的内容怪怪的了!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述