找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2751|回复: 5

[求助] 萌新求问这个问题在那里

1

主题

1

帖子

1

积分

贫民

积分
1
lyr 发表于 2018-6-19 21:34:50 | 显示全部楼层 |阅读模式
想用循环弄一个十进制转二进制(我不要用别的函数),一直有问题,求解

n= int(input("请输入要转换进制的数值:"))
k=1
output=0
if -1<n<2:
    prin(str(n))
while n<0 and n>=1:
        output=n%2*k+output
        n=n//2
        k=k*10
print("该数字转换为二进制后是:",str(output))


回复

使用道具 举报

8

主题

31

帖子

31

积分

贫民

积分
31
carlosgu 发表于 2018-6-21 13:38:41 | 显示全部楼层
it might be 'or' instead of 'and' in the while judgement.
回复 支持 反对

使用道具 举报

8

主题

31

帖子

31

积分

贫民

积分
31
carlosgu 发表于 2018-6-21 13:54:27 | 显示全部楼层
顺便请教一下,负数应该需要 complement , 不知道位数可以求负数的binary 吗?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
szfj 发表于 2018-6-25 03:39:39 | 显示全部楼层
正数二进制求出,取反码+1,得补码,就是负数的二进制了.字符串操作就OK了.
print('请输入十进制正整数:')
a = abs(int(input()))
e = a
d = []
s = ""
while a >= 1 :
    b = int(a/2)
    c = a%2
    d.append(c)
    a = b
d.reverse()
for i in d:
    s = s + str(i)
print("您输入的十进制正整数 %d 转换为二进制是 %s" %(e, s))
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-6-25 10:24:23 | 显示全部楼层
szfj 发表于 2018-6-25 03:39
正数二进制求出,取反码+1,得补码,就是负数的二进制了.字符串操作就OK了.
print('请输入十进制正整数:')
a = ...

楼上的说过complement了,因为要用到二进制加法,按lz的要求又不允许,还是有点复杂的。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
szfj 发表于 2018-6-25 20:11:24 | 显示全部楼层
本帖最后由 szfj 于 2018-6-25 20:33 编辑

看下,2进制加法,呵呵!
a = int(input("10进制转换2进制,请输入10进制数值:"))
e = a
d = []
x = False
s = ""
if a <= 0:
    a = abs(a)
    x = True
while a >= 1:
    b = int(a / 2)
    c = a % 2
    d.append(c)
    a = b
u = len(d)
if u <= 8:
    n = 8
elif u <= 16:
    n = 16
elif u <= 32:
    n = 32
elif u <= 64:
    n = 64
else:
    n = u
for i in range(n - u):  # n位补零:原码
    d.append(0)
if x:
    j = 0
    for i in d:             # 反码
        j += 1
        if i == 0:
            d[j-1] = 1
        else:
            d[j-1] = 0
    j = 0                   # +1补码
    for i in d:
        j += 1
        if i == 0:
            d[j-1] = 1
            break
        else:
            d[j-1] = 0
d.reverse()
for i in d:
    s = s + str(i)
print("您输入的十进制数 %d 转换为二进制是 %s" % (e, s))
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表