基本変換(Pythonを使用して基本変換を実現します)

ベースタイプ

基本システムは、次のタイプに分類できます
。1.1バイナリ文字Bは
1.2オクタル文字Oは
1.3を意味します10進文字Dは
14.4を意味します16進文字Hは

バイナリ:2つに1つ入力
します。数値01と10進法の間の変換関係のみが次のようになります。

  1. バイナリに変換小数(整数)
    (最後のものを直接書き込むことができる)ここに写真の説明を挿入
    2.バイナリに変換小数(
    ここに写真の説明を挿入
    それは負の数であれば、ちょうど前に負の符号を追加)
    1.3バイナリ小数点整数へ
    ここに写真の説明を挿入

1.4 2進数から10進
ここに写真の説明を挿入
10進数8(0,1,2,3,4,5,6,7)
16進数(0,1,2,3,4,5,6,7,8,9、A、 B、C、D、E、F)
は、8進数と16進数の間で10進数に変換する場合も同じです。
具体的には、次のpythonコードを見ることができます

'''用于二进制转换学习的练习代码相关代码和更多笔记教程可在 https://blog.csdn.net/FUTEROX 获取'''
'''多造轮子多学习 '''
def int_to_B(input_):
    '''对十进制数进行公式运算处理整数部分'''
    flag=True
    x=[]
    qu_mo = input_
    qu_yu = input_
    while flag:
        qu_yu=qu_mo%2
        x.append(qu_yu)
        qu_mo=qu_mo//2
        if qu_mo==1:
            x.append(qu_mo)
            flag=False
    number_int=''
    for i in x[::-1]:
        number_int=number_int+str(i)
    return number_int
    #此时返回的是一个整数部分的二进制数字
    #print(number_int)


def float_to_B(f,jindu=4):
    '''默认精度为四'''
    B=[]#存放整数部分
    for i in range(jindu):
        f=f*2
        b_zhengshu=int(f)
        B.append(b_zhengshu)
        if b_zhengshu !=0:
            f=f-b_zhengshu
    float_n=''
    for i in B:
        float_n=float_n+str(i)
    return float_n




if __name__=="__main__":

    print("欢迎使用进制转换工具")
    print('如果你想退出请按Q(必须为大写)')


    flag=True
    while flag:
        input_ = str(input("请你输入一个十进制的数字;"))
        if input_=="Q":
            #防止用户误操作必须使用大写字母Q退出
            print("感谢你的使用!!!")
            flag=False

        '''对输入的数字进行判断是否为整数还是小数
        如果是小数则对她进行分割,由于英文水平的问题,
        变量名多采用中文拼音进行命名'''

        if "." in input_:

            nub = []
            for i in input_:
                nub.append(i)
            if nub[0] != '0':
                way_point = nub.index(".")
                int_ = nub[0:way_point]
                int_un = ''
                for i in int_:
                    int_un = int_un + str(i)
                # print(int_un)
                int_input = int(int_un)
                int_part = int_to_B(int_input)

                float_ = nub[way_point:]
                float_part = ''
                for i in float_:
                    float_part = float_part + str(i)
                float_part = "0" + float_part
                float_part = float(float_part)
                float_part = float_to_B(float_part)

                # 开始整合字符串,两个函数运算后产生的都是字符串类型
                last_number = int_part + '.' + float_part
                last_number = float(last_number)
                print(last_number)
            elif nub[0] == '0':
                number = float_to_B(float(input_))
                number = '0.' + number
                number = float(number)
                print(number)



        elif "." not in input_ and input_!="Q":
            input_ = int(input_)
            reason = int(int_to_B(input_))
            print(reason)

ここに写真の説明を挿入
上記のアルゴリズムは10進数を2進数に変換することがわかります。したがって、実際には、%2と// 2を%8、// 8などに置き換えるだけで済みます。
ここに写真の説明を挿入

異なる拠点間の変換

1.1バイナリ→オクタル
まず、下図の対応する表を参照してください。
ここに写真の説明を挿入
例:バイナリ(11010111.0100111)Bをオクタルに変換する手順は次のとおりです。

  1. 小数点の前の111 = 7;

  2. 010 = 2;

  3. 11は011、011 = 3として完了します。

  4. 小数点以下010 = 2;

  5. 011 = 3;

  6. 1は100として完了し、100 = 4;
    ここに写真の説明を挿入

もちろん、バイナリを10進数に変換してから、8進数に変換することもできます。

1.2オクタル→バイナリ

方法:1対3の方法、つまりオクタル数を3つのバイナリ数に分解し、重みに応じて3つのバイナリ数を加算してオクタル数を構成します。小数点は同じままです。

例:オクタル(327)Oをバイナリに変換する手順は次のとおりです。

  1. 3 = 011;

  2. 2 = 010;

  3. 7 = 111;

  4. 読み取り、高から低への読み取り、011010111、つまり(327)O =(11010111)B
    ここに写真の説明を挿入

1.3オクタル→ヘキサデシマル

方法:10進数を2進数に変換してから、10進数を変更せずに2進数を16進数に変換します。

例:オクタル(327)Oを16進数に変換する手順は次のとおりです。

  1. 3 = 011;

  2. 2 = 010;

  3. 7 = 111;

  4. 0111 = 7;

  5. 1101 = D;

  6. 読み取り、高から低への読み取り、D7、つまり(327)O =(D7)H。
    ここに写真の説明を挿入
    等...

バイナリ加算および減算(補足)
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/FUTEROX/article/details/108806152