原码、反码、补码在汇编中的应用

原文章:知乎

原码和二进制类似,不过它有符号位。正数符号位为0,负数为1 。

例:4=0000 0100 ,-4=1000 0100

原码是人脑最容易理解和计算的表示方式。

但是这在计算机中计算就出了问题,这两个(4和-4)的原码相加为1000 1000(-8),这个结果并不对。

于是反码就出现了:

4(反)=0000 0100(正数的反码和原码一样)

-4(反)=1111 1011(负数的反码是将原码中,除符号位以外,每一位取反)

于是4+(-4)=0000 0100(4反)+1111 1011(-4反)=1111 1111(0反)

但是这还有一个问题:0怎么办?0不是正数也不是负数,0的反码怎么办?这就用到补码了。

于是补码的出现,解决了0的符号问题以及0的两个编码问题:

1-1 = 1 + (-1) = 0000 0001原+ 1000 0001原= 0000 0001补+ 1111 1111补= 1 0000 0000补=0000 0000补=0000 0000原注意:进位1不在计算机字长里。

这样0用0000 0000表示,而以前出现问题的-0则不存在了。而且可以用1000 0000表示-128:-128的由来如下:

(-1) + (-127) = 1000 0001原+ 1111 1111原= 1111 1111补+ 1000 0001补= 1000 0000

相关推荐
典典分享指南8 小时前
飞书 + 企业微信 + 微信文档多端协同实践指南
汇编·flask·intellij-idea·fastapi
极客互动API5 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot88811 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾15 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程17 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust17 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王18 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg66619 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-20 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot8881 个月前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa