热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

计算方法_原码反码补码的计算方法

本文由编程笔记#小编为大家整理,主要介绍了原码反码补码的计算方法相关的知识,希望对你有一定的参考价值。原码反码补码具体的讲解可以看看这篇:https://blog.csdn.net/af
本文由编程笔记#小编为大家整理,主要介绍了原码反码补码的计算方法相关的知识,希望对你有一定的参考价值。

原码反码补码具体的讲解可以看看这篇:https://blog.csdn.net/afsvsv/article/details/94553228

 

总结一下计算方法

对于a-b,

首先,将a、b转换成二进制数,这时候的二进制数是无符号的。计算a无 - b无

原码:将无符号数首位当成符号位,正数置为0,负数置为1。这里要注意b的大小不应该超过原码可以表示的范围,否则转换出来的原码是错误的。计算a原+b原

反码:在原码的基础上,将函数的非符号位取反,符号位不变。计算a反+b反

补码:在反码的基础上,负数加1,正数不变;

或者在原码的基础上,对符号位后面(n-1)位的数字取模(假如后面(n-1)位表示数值,那么模为2^(n-1),用二进制表示就是首位1跟着n-1个0)

这里的模就是mod后面的那个数,C的计算符是%

 

比如,a=3,b=5,计算a-b

转换成二进制无符号数a无=0101,b无=0111,这时仍要计算0101 - 0111(不要计算结果,是错误的)

转换成原码a反=0101,b反=(-0111)=1111,这时要计算0101+1111(不要计算结果,是错误的)

转换成补码a补=0101,b补=1001,这时计算0101+1001=1110(这是a-b的补码表示,转换成原码是1010,即-2,正确)

 


推荐阅读
author-avatar
付帅sz_702
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有