Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
首页 › 算法 › -128 的八位原码、反码、补码

-128 的八位原码、反码、补码

Jacky
10月 2, 2019算法阅读 14,353

还是帮同学解题的时候踩坑了。

原码无
反码无
补码10000000

一开始没发现,以至于每次输入-128的时候转换出来的格式是不正确的。然后自己算的时候发现问题了,八位原码里面第一位是符号位,剩下7位是数值位,2^7=128 算上负号 256 个数字,+0/-0各占一个,所以八位二进制原码表示十进制数的范围为 -127~127。

这谁顶得住啊,原题就是求 -128~127。

后来查了下,-128 没有原码和反码,(人为规定)补码为1000000(-0)。

附上原题的解法

# coding=utf-8

# 求 -128 ~ 127 的8位原码、反码、补码
# Copyright 2019 0xJacky<jacky-943572677@qq.com>

print("Please input a decimal integer between -128 ~ 127:")
i = int(input())

# 限定输入范围,否则无限循环
while i < -128 or i > 127:
    print("Please input a decimal integer between -128 ~ 127:")
    i = int(input())

inverse = ''
if i < 0 or i > -128:
    # 对于 -127 < i < 0 的数进行处理
    binary = format(i, '08b')[1:]  # 格式化字符串,去掉负号,固定长度
    # 逐项求反,得到反码
    for b in binary:
        if b == '1':
            inverse += '0'
        else:
            inverse += '1'
    
    # 下面加符号位(1)说明是个负数
    binary = '1' + binary
    # 二进制加法,求补码(负数的补码=反码末尾+1,二进制)
    # int(字符串, 进制)
    complement = int(inverse, 2) + int('1', 2)
    complement = '1' + format(complement, '07b')
    inverse = '1' + inverse
            
elif i >= 0:
    # 正数的原码、反码、补码均相同
    # 这里当做字符串处理并加上符号位(0)说明这个是正数
    binary = format(i, '07b')
    inverse = '0' + binary
    complement = '0' + binary
    binary = '0' + binary

else:
    # 对 -128 特殊处理,因为 -128 的数值位已达到8位,加上符号吗后则变为9位
    # 不符合定义,对此,经过询问前辈以及百度后得知,在 -128 的原码和补码不存在
    # 人为规定其补码为 10000000(即为-0的补码)
    # 补充说明,在《大学计算机》内,一般让学生求 -127 ~ 127
    # 因为 +0, -0 的原码、补码、反码并不相同(符号位的差异)
    binary = 'undefined'
    inverse = 'undefined'
    complement = '10000000'

print(binary, 'bin')
print(inverse, 'inv')
print(complement, 'comp')

文章最后修订于 2020年8月31日

赞(8)
本文系作者 @Jacky 原创发布在 Jacky's Blog。未经许可,禁止转载。
Python 四位一并法
上一篇
在 Xcode 中写 C 程序
下一篇
再想想
暂无评论
近期评论
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
8
  • 8
  • 0
Copyright © 2016-2023 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
# Mac # # Apple # # OS X # # iOS # # macOS #
Jacky
PHP C C++ Python | 舞象之年 | 物联网工程
174
文章
169
评论
267
喜欢