ベースタイプ
基本システムは、次のタイプに分類できます
。1.1バイナリ文字Bは
1.2オクタル文字Oは
1.3を意味します10進文字Dは
14.4を意味します16進文字Hは
バイナリ:2つに1つ入力
します。数値01と10進法の間の変換関係のみが次のようになります。
- バイナリに変換小数(整数)
(最後のものを直接書き込むことができる)
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をオクタルに変換する手順は次のとおりです。
-
小数点の前の111 = 7;
-
010 = 2;
-
11は011、011 = 3として完了します。
-
小数点以下010 = 2;
-
011 = 3;
-
1は100として完了し、100 = 4;
もちろん、バイナリを10進数に変換してから、8進数に変換することもできます。
1.2オクタル→バイナリ
方法:1対3の方法、つまりオクタル数を3つのバイナリ数に分解し、重みに応じて3つのバイナリ数を加算してオクタル数を構成します。小数点は同じままです。
例:オクタル(327)Oをバイナリに変換する手順は次のとおりです。
-
3 = 011;
-
2 = 010;
-
7 = 111;
-
読み取り、高から低への読み取り、011010111、つまり(327)O =(11010111)B
1.3オクタル→ヘキサデシマル
方法:10進数を2進数に変換してから、10進数を変更せずに2進数を16進数に変換します。
例:オクタル(327)Oを16進数に変換する手順は次のとおりです。
-
3 = 011;
-
2 = 010;
-
7 = 111;
-
0111 = 7;
-
1101 = D;
-
読み取り、高から低への読み取り、D7、つまり(327)O =(D7)H。
等...
バイナリ加算および減算(補足)