以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=" ")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值