输入一个整数,可以是正整数、负整数、0,范围在[-1000000000, 1000000000]之间,使用32位二进制进行存储,编写程序输出其二进制补码形式,输出时每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=" ")