大家好,又见面了,我是你们的朋友全栈君。=
本篇文章是我的第一篇博客,用于帮助那些和我一样处于迷茫中的朋友。如若对你有帮助的话请点个赞。如若引用还请注明出处!
读这篇文章之前,你必须对原码 反码 补码有所了解。
关于这些推荐一篇大佬的文章。
[关于原码 反码和补码](https://blog.csdn.net/chenchao2017/article/details/79733278)
在这里补充一点关于补码的知识:
a
例如:
+5的补码为0 0101
-5的补码为1 1011
如果我想用八位二进制补码表示怎么办?
答案是从右向左补充符号位!!!
那么
+5的补码就应该是0000 0101
-5的补码就应该是1111 1011
b
在进行运算时必须保证位数足够,即不发生数据溢出,否则结果错误!!!
1.整数之间的运算
例如:
(+12) + (+8)
转换成补码形式后按位相加,符号位运算得到的值仍是符号位。若有多余位数产生则舍去多余位数。
在这里我采用了六位二进制数(范围-2^5~ 2^5-1)。 二进制0 10100=十进制 正20 再来个负数!(记住是各个位对应相加)
二进制0 00101=十进制 正5 在这里再次强调一下,多余位需要舍去,符号位经过运算得到的值依然是符号位。 2.小数间的运算 例如: 12.625+7=12+0.625+7
12+7这里就不介绍了(上面刚说过)。 0.625采用“乘二取整法”化为二进制可以得到是0.101(这里不会的直接百度,相信你!) 正19用二进制表示为 0 10011。 0 10011+0.101 即得到二进制结果为 0 10011.101 (首位0为符号位) 等于19.625
再例如: 7-0.375 0.375采用“乘二取整法”化为二进制可以得到0.011,那么-0.375就是1.011。化为补码形式为1.101(加一是在最后面加的),化为8位二进制是1 1111.101
即结果为1 0 0110.101(最左边1为溢出值,舍去)。 0 0110.101= +6.625 上文是我自己的拙见,可能有不当或者错误的地方。如若细心的你发现了,还请指正!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193647.html原文链接:https://javaforall.cn
=