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

原文章:知乎

原码和二进制类似,不过它有符号位。正数符号位为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]补

相关推荐
suyong_yq1 天前
调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
汇编·arm开发·嵌入式系统
染指11105 天前
18.第二阶段x64游戏实战-MFC列表框
汇编·c++·windows·游戏·游戏逆向·x64dbg
RaLi和夕8 天前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习
yu4106218 天前
GCC 内建函数汇编展开详解
汇编
手打猪大屁12 天前
ARM裸机开发——I.MX6U_汇编LED灯驱动
汇编·arm开发
zhmc13 天前
Keil A51汇编伪指令
汇编
攻城狮7号13 天前
【第48节】探究汇编使用特性:从基础到混合编程
汇编·c++·windows
打工人你好19 天前
Visual Studio Code 在.S汇编文件中添加调试断点及功能简介
汇编·ide·vscode
红白小蛋糕20 天前
《操作系统真象还原》第八章(1)——内存管理系统
汇编·笔记·ubuntu
tjsoft21 天前
asm汇编源代码之按键处理相关函数
汇编