鱼C论坛

 找回密码
 立即注册
查看: 2385|回复: 8

十进制转化二进制

[复制链接]
发表于 2021-7-11 18:59:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
while 1:
    print('仅支持100以下换算')
    variable = input('请输入10进制数字:')
    # 用户输入一个数字 2
    before = int(variable)
    # 讲用户输入数字转化整型
    after = before // 2
    if before == 2:
        afters = before % 2
        print(after,afters)
    else:
        afters = before % 2
        if before == 1:
            print('1')
        else:
            if before == 0:
                print('0')
            else:
                if before < 0:
                    print('请输入一个比0大的数字!')
        if before > 100:
            print('请输入100以下的数字!')
        else:
            tis = after // 2
            tiss = after % 2
            if after == 1:
                tiss = 1
                print(tiss,afters)
            else:
                tiss = after % 2
                pis = tis // 2
                piss = tis % 2
                if tis == 1:
                    piss = 1
                    print(piss,tiss,afters)
                else:
                    piss = tis % 2
                    tiis = pis // 2
                    tiiss = pis % 2
                    if pis == 1:
                        tiiss = 1
                        print(tiiss,piss,tiss,afters)
                    else:
                        tiiss = pis % 2
                        wins = tiis // 2
                        winss = tiis % 2
                        if tiis == 1:
                            winss = 1
                            print(winss,tiiss,piss,tiss,afters)
                        else:
                            winss = tiis % 2
                            pos = wins // 2
                            poss = wins % 2
                            if wins == 1:
                                poss = 1
                                print(poss,winss,tiiss,piss,tiss,afters)
                            else:
                                poss = wins % 2
                                wies = pos // 2
                                wiess = pos % 2
                                if pos == 1:
                                    wiess = 1
                                    print(wiess,poss,winss,tiiss,tiss,piss,afters)
                                else:
                                    wiess = pos % 2
                                    print(wiess,poss,winss,tiiss,piss,tiss,afters)

其他的我试了可以 就 100 和98 不行暂时是这样的 有什么地方不对 各位大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-11 19:01:22 From FishC Mobile | 显示全部楼层
呵呵,代码不是这样写的哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 19:08:42 From FishC Mobile | 显示全部楼层
你可以参考一下这里
https://blog.csdn.net/yzmumu/article/details/80775784
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 12:53:32 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-4 12:54 编辑
  1. def binary(num: int) -> int:
  2.     n = num
  3.     res = ''
  4.     while n > 1:
  5.         if n%2 == 0:
  6.             res = res+'0'
  7.             n = int(n/2)
  8.         else:
  9.             res = res+'1'
  10.             n = int((n-1)/2)
  11.     res = int((res+'1')[::-1])
  12.     return res

  13. print(binary(42)) # 101010
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 13:44:31 | 显示全部楼层
还是用bin()吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 14:10:33 | 显示全部楼层

是很方便沒有錯,但是這樣就失去了題目的目的性了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 14:29:53 | 显示全部楼层
傻眼貓咪 发表于 2021-9-4 14:10
是很方便沒有錯,但是這樣就失去了題目的目的性了

那你可以这样
  1. d = int(input('Please in put a decimal number:'))
  2. if d == 1:
  3.     print(1)
  4. elif d == 2:
  5.     print(10)
  6. elif d == 3:
  7.     print(11)
  8. elif d == 4:
  9.     print(100)
  10. elif d == 5:
  11.     print(101)
  12. elif d == 6:
  13.     print(110)
  14. elif d == 7:
  15.     print(111)
  16. elif d == 8:
  17.     print(1000)
  18. elif d == 9:
  19.     print(1001)
  20. elif d == 10:
  21.     print(1010)
  22. elif d == 11:
  23.     print(1011)
  24. elif d == 12:
  25.     print(1100)
  26. elif d == 13:
  27.     print(1101)
  28. elif d == 14:
  29.     print(1110)
  30. elif d == 15:
  31.     print(1111)
  32. elif d == 16:
  33.     print(10000)
  34. elif d == 17:
  35.     print(10001)
  36. elif d == 18:
  37.     print(10010)
  38. elif d == 19:
  39.     print(10011)
  40. elif d == 20:
  41.     print(10100)
  42. elif d == 21:
  43.     print(10101)
  44. elif d == 22:
  45.     print(10110)
  46. elif d == 23:
  47.     print(10111)
  48. elif d == 24:
  49.     print(11000)
  50. elif d == 25:
  51.     print(11001)
  52. elif d == 26:
  53.     print(11010)
  54. elif d == 27:
  55.     print(11011)
  56. elif d == 28:
  57.     print(11100)
  58. elif d == 29:
  59.     print(11101)
  60. elif d == 30:
  61.     print(11110)
  62. elif d == 31:
  63.     print(11111)
  64. elif d == 32:
  65.     print(100000)
  66. elif d == 33:
  67.     print(100001)
  68. elif d == 34:
  69.     print(100010)
  70. elif d == 35:
  71.     print(100011)
  72. elif d == 36:
  73.     print(100100)
  74. elif d == 37:
  75.     print(100101)
  76. elif d == 38:
  77.     print(100110)
  78. elif d == 39:
  79.     print(100111)
  80. elif d == 40:
  81.     print(101000)
  82. elif d == 41:
  83.     print(101001)
  84. elif d == 42:
  85.     print(101010)
  86. elif d == 43:
  87.     print(101011)
  88. elif d == 44:
  89.     print(101100)
  90. elif d == 45:
  91.     print(101101)
  92. elif d == 46:
  93.     print(101110)
  94. elif d == 47:
  95.     print(101111)
  96. elif d == 48:
  97.     print(110000)
  98. elif d == 49:
  99.     print(110001)
  100. elif d == 50:
  101.     print(110010)
  102. elif d == 51:
  103.     print(110011)
  104. elif d == 52:
  105.     print(110100)
  106. elif d == 53:
  107.     print(110101)
  108. elif d == 54:
  109.     print(110110)
  110. elif d == 55:
  111.     print(110111)
  112. elif d == 56:
  113.     print(111000)
  114. elif d == 57:
  115.     print(111001)
  116. elif d == 58:
  117.     print(111010)
  118. elif d == 59:
  119.     print(111011)
  120. elif d == 60:
  121.     print(111100)
  122. elif d == 61:
  123.     print(111101)
  124. elif d == 62:
  125.     print(111110)
  126. elif d == 63:
  127.     print(111111)
  128. elif d == 64:
  129.     print(1000000)
  130. elif d == 65:
  131.     print(1000001)
  132. elif d == 66:
  133.     print(1000010)
  134. elif d == 67:
  135.     print(1000011)
  136. elif d == 68:
  137.     print(1000100)
  138. elif d == 69:
  139.     print(1000101)
  140. elif d == 70:
  141.     print(1000110)
  142. elif d == 71:
  143.     print(1000111)
  144. elif d == 72:
  145.     print(1001000)
  146. elif d == 73:
  147.     print(1001001)
  148. elif d == 74:
  149.     print(1001010)
  150. elif d == 75:
  151.     print(1001011)
  152. elif d == 76:
  153.     print(1001100)
  154. elif d == 77:
  155.     print(1001101)
  156. elif d == 78:
  157.     print(1001110)
  158. elif d == 79:
  159.     print(1001111)
  160. elif d == 80:
  161.     print(1010000)
  162. elif d == 81:
  163.     print(1010001)
  164. elif d == 82:
  165.     print(1010010)
  166. elif d == 83:
  167.     print(1010011)
  168. elif d == 84:
  169.     print(1010100)
  170. elif d == 85:
  171.     print(1010101)
  172. elif d == 86:
  173.     print(1010110)
  174. elif d == 87:
  175.     print(1010111)
  176. elif d == 88:
  177.     print(1011000)
  178. elif d == 89:
  179.     print(1011001)
  180. elif d == 90:
  181.     print(1011010)
  182. elif d == 91:
  183.     print(1011011)
  184. elif d == 92:
  185.     print(1011100)
  186. elif d == 93:
  187.     print(1011101)
  188. elif d == 94:
  189.     print(1011110)
  190. elif d == 95:
  191.     print(1011111)
  192. elif d == 96:
  193.     print(1100000)
  194. elif d == 97:
  195.     print(1100001)
  196. elif d == 98:
  197.     print(1100010)
  198. elif d == 99:
  199.     print(1100011)
  200. else:
  201.     print(False)


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-4 16:28:22 | 显示全部楼层

学废了,回头我就去弄个大点的显示器....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 20:49:40 | 显示全部楼层
  1. #-*- coding: utf-8
  2. from decimal import Decimal
  3. def bTod(n, pre=4):
  4.     '''
  5.     把一个带小数的二进制数n转换成十进制
  6.     小数点后面保留pre位小数
  7.     '''
  8.     string_number1 = str(n) #number1 表示二进制数,number2表示十进制数
  9.     decimal = 0  #小数部分化成二进制后的值
  10.     flag = False
  11.     for i in string_number1: #判断是否含小数部分
  12.         if i == '.':
  13.             flag = True
  14.             break
  15.     if flag: #若二进制数含有小数部分
  16.         string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分
  17.         for i in range(len(string_decimal)):
  18.             decimal += 2**(-i-1)*int(string_decimal[i])  #小数部分化成二进制
  19.         number2 = int(str(int(string_integer, 2))) + decimal
  20.         return round(number2, pre)
  21.     else: #若二进制数只有整数部分
  22.         return int(string_number1, 2)#若只有整数部分 直接一行代码二进制转十进制 python还是骚

  23. def dTob(n, pre=4):
  24.     '''
  25.     把一个带小数的十进制数n转换成二进制
  26.     小数点后面保留pre位小数
  27.     '''
  28.     string_number1 = str(n) #number1 表示十进制数,number2表示二进制数
  29.     flag = False
  30.     for i in string_number1: #判断是否含小数部分
  31.         if i == '.':
  32.             flag = True
  33.             break
  34.     if flag:
  35.         string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分
  36.         integer = int(string_integer)
  37.         decimal = Decimal(str(n)) - integer
  38.         l1 = [0,1]
  39.         l2 = []
  40.         decimal_convert = ""
  41.         while True:
  42.            if integer == 0: break
  43.            x,y = divmod(integer, 2)  #x为商,y为余数
  44.            l2.append(y)
  45.            integer = x
  46.         string_integer = ''.join([str(j) for j in l2[::-1]])  #整数部分转换成二进制
  47.         i = 0
  48.         while decimal != 0 and i < pre:
  49.             result = int(decimal * 2)
  50.             decimal = decimal * 2 - result
  51.             decimal_convert = decimal_convert + str(result)
  52.             i = i + 1
  53.         string_number2 = string_integer + '.' + decimal_convert
  54.         return float(string_number2)
  55.     else: #若十进制只有整数部分
  56.         l1 = [0,1]
  57.         l2 = []
  58.         while True:
  59.            if n == 0: break
  60.            x,y = divmod(n, 2)  #x为商,y为余数
  61.            l2.append(y)
  62.            n = x
  63.         string_number = ''.join([str(j) for j in l2[::-1]])
  64.         return int(string_number)
复制代码

举个例子:
>>>dTob(5.31,5)#将5.31转成二进制,保留5位小数
101.01001
>>>bTod(101.01001,5)#将101.01001转成十进制,保留5位小数
5.28125



浮点数运算可能有一点误差
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 21:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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