二进制和十进制互转的算法


  • 如何算一个二进制数转成十进制:

二进制:1010  

解析: 1 (2的3次方)  0 (2的2次方) 1 (2的1次方) 0(2的0次方)

            数字的多少次方:2**3  pow(2,3)

    1*2^3+0*2^2+1*2^1+0*2^0

    0 长度len(s)-1-0---->2的3次方(长度-1,启起位为0)

              1 长度len(s)-1-1---->2的2次方(长度-1,启起位为0)

    2 长度len(s)-1-2---->2的1次方(长度-1,启起位为0)

    3 长度len(s)-1-3---->2的0次方(长度-1,启起位为0)

方法:1)遍历,获取第一位的数写,然后转换成int;

           2)每一位对应的2的多少次方;

           3)所有值相加求和

 

例:

bin_num=input("请输入一个二进制的字符串:")
bin_num_length=len(bin_num)
result=0
for i  in range(bin_num_length):
    result+=int(bin_num[i])*2**(bin_num_length-1-i)  #取第0位的1,再*2的3次方(bin_num_length-1-i)
print(result)

 

  • 如何算一个十进制转成二进制:

分析:

       读一个数,一直除2再取余做为2进制的每一位上的数,一直除2,直到商为0为止。商放第一个数,余数放第2个数

a=10

l=[]

while a!=0:

  l.append(str(divmod(a,2)[1]))

  a=divmod(a,2)[0]  #divmod 返回一个包含商和余数的元组(a // b, a % b)

  print(a,str(divmod(a,2)[1]))

l=reversed(l)

print("".join(l))

>>>['1', '0', '1', '0']

 

  • 猜数小练习,随机生成一个整数,你输入一个数字,判断大于、小于、等于。

import random

guess_num=random.randint(1,10)

user_num=int(input("请输你猜测的数字:"))

if user_num==guess_num:

  print("猜中了")

elif user_num>guess_num:

  print("猜大了")

else:

  print("猜小了")

 

 

 

 

 

  •   题目:使用while循环,生成随机整数(1-10),生成3的时候,结束 循环,否则 继续循环执行

import random

while 1:

  random_num=random.randint(1,10)

  print(random_num)

       if random_num==3:

    break

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM