ネコでもつくれる人工知能

日記です。1日やったことを書いていきます。内容はそんなにレベルが高くないものになると思います。

【python】2進数→10進数と10進数→2進数

1日10分でできるアタマの体操😃

2進数→10進数

特に言うことなし
強いて挙げるとすれば2進をリスト化した時にひっくり返さんといけないことぐらいか

def calc_base2(base2_list):
    base2_list = reversed(base2_list) #ひっくり返さんとイカン
    base10 = 0
    index = 1
    for num in base2_list:
        if num == 1:
            base10 += index
        index *= 2

    return base10


# if __name__ == '__main__':
#     base2 = input()
#     try:
#         base2_list = list(map(int, list(base2)))
#     except:
#         print('please input only integer.')
#         exit(0)
#     print(calc_base2(base2_list))

10進数→2進数

こっちはちとわかりづらい
ビット(0か1)を算出してリストに突っ込む

割る2したあとintでくるんで余り切り捨て

1以下になったら終了

def calc_base10(base10):
    base2_list = []
    while(base10 >= 1):
        bit = base10 % 2
        base2_list.append(bit)
        base10 /= 2
        base10 = int(base10)
    base2 = ''.join(map(str,reversed(base2_list)))

    return base2


# if __name__ == '__main__':
#     base10 = int(input())
#     print(calc_base10(base10))