进制类型
进制可以分为以下几种类型;
1.1 二进制 字母B表示
1.2 八进制 字母O表示
1.3 十进制 字母D表示
14.4 十六机制 字母H表示
二进制:逢二进一,只有数字0 1
与十进制的换算关系如下;
十进制转换为二进制(整数)
(最后一个一可以直接写上去)
2.十进小数制转二进
(如果是负数的话只需要在前面加入负号即可)
1.3二进制转十进制整数
1.4二进制转十进制小数
八进制(0,1,2,3,4,5,6,7)
十六进制 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
在八进制与十六进制之间转换为十进制都是一样的。
具体的可以看到如下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)
可以看到上面的算法将十进制转化为了二进制,那么其实只需要将% 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;
当然你也可以二进制换十进制再换八进制。
1.2 八进制 → 二进制
方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。
例:将八进制的(327)O转换为二进制的步骤如下:
3 = 011;
2 = 010;
7 = 111;
读数,读数从高位到低位,011010111,即(327)O=(11010111)B
1.3 八进制 → 十六进制
方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。
例:将八进制的(327)O转换为十六进制的步骤如下:
3 = 011;
2 = 010;
7 = 111;
0111 = 7;
1101 = D;
读数,读数从高位到低位,D7,即(327)O=(D7)H。
etc…
二进制加减(补充)
原文链接:https://blog.csdn.net/FUTEROX/article/details/108806152