阅读《C++Primer》的个人记录(二)——2.1基本内置类型-关于浮点数、补码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了阅读《C++Primer》的个人记录(二)——2.1基本内置类型-关于浮点数、补码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1717字,纯文字阅读大概需要3分钟。
内容图文
![阅读《C++Primer》的个人记录(二)——2.1基本内置类型-关于浮点数、补码](/upload/InfoBanner/zyjiaocheng/842/9c0c7d2a975e445a9392b989f34c6bd9.jpg)
学习第二章基本内置类型的过程中,对于书上描写的单精度浮点数和双精度浮点数的相关内容和补码的作用原理没弄清楚,经过查阅相关资料,整理如下:
现从简单的补码说起,
原码:正数的原码就是它的本身,负数用最高位是1表示负数
反码:正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反
补码:正数的补码和原码一样,负数的补码是负数的反码加1
【符号位在计算时直接参与运算】
原码缺点:0有两种表示,无法处理减法
反码:可以处理加减法及符号位,但0仍然有两种表示方式
补码:完美解决以上问题
逐条分析
原码加减法运算:略(很显然除了两正数相加其他都算不了)
反码加减法运算:
我们将符号位与绝对值分开讨论(数字形如&&&&&&&&)
设一个负数为-X,则其反码表示的数为-(128-x)
—————正数+负数
现假设一个运算为Y+(-X)【Y为正数】
符号位运算为0+1
绝对值运算为Y+128-X
此时若Y>=X则溢出一位至符号位得符号位为0,同时绝对值位运算结果为Y-X(>0),再将结果取原码得到符号位为0,绝对值位Y-X。符合预期
此时若Y<X则,将结果取原码的符号位为1,绝对值为128-(Y+128-X)=X-Y,符合预期
—————负数+负数
现假设一个运算为(-X1)+(-X2)
符号位运算为1+1=0
绝对值位运算为(256-X1-X2)
此时若X1+X2>128则将结果取原码的绝对值位X1+X2-128,符号位为0。显然得到的答案不正确,但此类情况对应着溢出情况。所以结果也符合预期
此时若X1+X2<=128则绝对值位溢出一位至符号位得符号位为1,绝对值位为128-X-Y。符合预期
综上,反码运算解决了符号位问题。
但0仍然有00000000和10000000两种表示方法
补码
1、先解释——减一个数等同于加其的补码
设一个负数的原码为X,反码为Y,补码为Z则
X+Y=11111111
Z=Y+1
的X+Z=100000000(1溢出)=00000000
故X=-Z
所以说采用补码,统一了加减法
2、再解释补码的加减运算
略(同反码类似)
浮点数:
https://www.cnblogs.com/icmzn/p/5060195.html
我觉得这篇文章总结的很到位了,不再赘述【其实自己也没100%理解透彻233,等学习深入了再回头看看】
第二篇博客,虽然内容很简单,但觉得还是有点货的吧hhh,以后继续加油吧
内容总结
以上是互联网集市为您收集整理的阅读《C++Primer》的个人记录(二)——2.1基本内置类型-关于浮点数、补码全部内容,希望文章能够帮你解决阅读《C++Primer》的个人记录(二)——2.1基本内置类型-关于浮点数、补码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。