找回密码
 register

QQ登录

只需一步,快速开始

查看: 56|回复: 0

[汇编语言] [零基础入门学习]·43·附注2·补码

[复制链接]

[汇编语言] [零基础入门学习]·43·附注2·补码

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:109
  • 打卡月天数:5
  • 打卡总奖励:108
  • 最近打卡:2025-02-05 16:21:25
Waylee

主题

0

回帖

1万

积分

仙帝

积分
13041
Waylee 2025-1-18 16:33 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

附注2 补码

以8位数据为例,对于无符号数来说是从00000000~11111111b到0~255一一对应的,那么我们如何对有符号数进行编码呢?即我们如何用8位数据表示有符号数呢?

既然表示的数有符号,则必须要区分正、负。

首先,我们可以考虑用8位数据的最高位来表示符号,1表示负,0表示正,而用其他位表示数值。如下:

00000000b:0
00000001b:1
00000010b:2
01111111b:127
10000000b:?
10000001b:-1
10000010b:-2
11111111b:-127

可见,用上面的表示方法,8位数据可以表示-127~127的254个有符号数。从这里我们看出一些问题,8位数据可以表示255种不同的信息,也就是说应该表示255个有符号数,可用上面的方法,只能表示254个有符号数。注意,用上面的方法,00000000b和10000000b都表示0,一个是0,一个是-0,当然不可能有-0。可以看出,这种表示有符号数的方法有问题,它并不能正确的表示有符号数。

我们再考虑用反码来表示,这种思想是,我们先确定用 00000000b~01111111b 表示0~127,然后再用它们按位取反后的数据表示负数。如下:

00000000b:0 11111111b:?
00000001b:1 11111110b:-1
00000010b:2 11111101b:-2
01111111b:127   10000000b:-127

可以看出,用反码表示有符号数存在同样的问题,0出现重码。

为了解决这种问题,采用一种称为补码的编码方法。这种思想是:先确定用 00000000b~01111111b 表示0~127,然后再用它们按位取反加1后的数据表示负数。

00000000b:0 11111111b+1=00000000b=0
00000001b:1 11111110b+1=11111111b=-1
00000010b:2 11111101b+1=11111110b=-2
01111111b:127   10000000b+1=10000001b=-127

观察上面的数据,我们可以发现,在补码方案中:

  1. 最高位为1,表示负数;
  2. 正数的补码取反后加1,为其对应的负数的补码;负数的补码取反后加1后,为其绝对值。比如:
    1的补码为:00000001b,取反后加1为:11111111b,表示-1;
    -1的补码为:11111111b,取反后加1为:00000001b,其绝对值为1。

我们从一个负数的补码不太容易看出它所表示的数据,比如:11010101b表示的数据是多少?
但是我们利用补码的特性,将11010101b取反加1后为:00101011b。可知11010101b表示的负数的绝对值为:2BH,则11010101b表示的负数值为-2BH。

那么-20的补码是多少呢?
用补码的特效,-20的绝对值是20,00010100b,将其取反加1后位11101100b。可知-20H的补码为:11101100b。

那么10000000b表示多少呢?
10000000b取反加1后位:10000000b,其大小为128,所以10000000b表示-128。

8位补码所表示的范围:-128~127。

补码为有符号数的运算提供了方便,运算后的结果依旧满足补码规则。

比如:
QQ截图20250118163513.webp

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-2-5 23:01 , Processed in 0.114733 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表