栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

以Python为名 向输入的数字施展变成补码的魔法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

以Python为名 向输入的数字施展变成补码的魔法

 输入一个整数,可以是正整数、负整数、0,范围在[-1000000000, 1000000000]之间,使用32位二进制进行存储,编写程序输出其二进制补码形式,输出时每4位加一位空格。

编程要求:

  1. 按照题目要求,认真阅读题目要求,进行编程计算;
  2. 合理使用算术运算符和逻辑运算符、分支语句、循环语句;
  3. 严格按照输出效果进行输出;
  4. 输出效果的加粗部分是输入,非加粗部分是输出。

输出效果1:

15

0000 0000 0000 0000 0000 0000 0000 1111

输出效果2:

-1

1111 1111 1111 1111 1111

number=int(input('向你施一个魔法~变成补码!'))
L=[]#从空列表中添加数字
if number<0:
    mid=number*(-1)#先以正数形式求原码
else:
    mid=number#要注意正数的原反补是一致的哦
while mid!=0:#这个while循环说的是把输入的数转换为二进制哦
    L.append(mid%2)#取余转换成原码
    mid=mid//2
if len(L)<32:#保证列表是32位,空位补0
    for i in range(32-len(L)):
        L.append(0)
L.reverse()#两级反转!!!变成原码就现在
if number<0:
    L[0]=1#0代表正数,1代表负数
    for i in range(len(L)-1,0,-1):#原码转换为补码
        if L[i]==1:
            ops=i#从最低位开始到位为1为止不变
            break
    for i in range(1,ops):
        if L[i]==1:#其他位取反,也就是从1变成0,从0变成1的啦
            L[i]=0
        else:
            L[i]=1
counter=0
for i in range(len(L)):#把列表中的数字一个一个摘出来,就不会一直待在列表里啦
    print(L[i],end="")
    counter=counter+1
    if counter%4==0:#四个一组以空格隔开
        print(end=" ")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号