【NB】和我一起学汇编之原码反码补码

优选教程   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-5-11

书接上回,上次讲了有符号数正数的编码规则,这回我们说有符号数负数的编码规则。

在说这之前我们要先明白原码反码和补码

负数的编码规则(负数是按补码存储的)

原码:最高位为符号位,其余各位为这个数本身的绝对值

反码:正数的反码与原码相同
负数:符号位为1,其余为对原码取反

补码:正数的补码与原码也相同
负数 符号数为1,其余位对原码取反,再加1

例如//8bit举例
1 原码/反码/补码00000001


这里看到图中的数据为01.这个01是十六进制,那么转为二进制就是00000001 相符。(6也同理)

6 原码/反码/补码00000110

-1 原码10000001 反码11111110 补码11111111


这里看到内存中为FF,转为二进制就是11111111

-7 原码10000111 反码11111000 补码11111001
这里得到是F9 即为111111001


那么我们怎么知道多少以内是正数,多少以内是负数呢?



具体看这个图(一字节8bit举例,别的单位同理),当存储的是无符号数是,可以存00到FF
当存储的是有符号数时,00到7F是正数,80到FF为负数

就比如是一个doubleword(双字,32bit)
那么就是00000000到7FFFFFFF是正数,80000000到FFFFFFFF是负数

好了今天的就到这里[爱心][爱心][爱心]

11楼
HR阿隐 2022-5-14
汇编啊,只是用c来验证一下内存[汗]
12楼
玖月๑ 2022-5-15
奖励结算,当前结算等级:1;少侠辛苦了。
13楼
昵称629891 2022-9-15
楼主教教我补码的加减法( ˉ͈̀꒳ˉ͈́ )✧
1 2

评论

登录后才可发表内容
  • 主题

    24

  • 帖子

    203

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0436s Mem:1996Kb