原码反码补码的计算方法
原码反码补码具体的讲解可以看看这篇: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,正确)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!