发布网友 发布时间:2022-04-22 11:12
共1个回答
热心网友 时间:2023-09-23 02:09
以下代码用于实现十进制转二进制、八进制、十六进制:
# -*- coding: UTF-8 -*- # Filename :test.py# author by : dfghj345 # 获取用户输入十进制数dec = int(input("输入数字: ")) print("十进制数为",dec,":")print("转换为二进制为:", bin(dec))print("转换为八进制为:", oct(dec))print("转换为十六进制为:", hex(dec))
1、算出 2 的 n 次幂不大于要表示的值;
2、用要表示的值减去 2的 n 次方,得到剩下的值后,重复步骤 1,直到最后剩下 0 为止。
举个例子,十进制的 107 如何转成二进制,先找出 2 的 n 次幂不大于 107 ,算得 n = 6,用 107 减去 2的6次方 得到 43。
重复下来后:107=1x2^6+1x2^5+0x2^4+1x2^3+0x2^2+1x2^1+1x2^0
如果该位用到,用 1 表示,否则用 0 表示。所以 107 用二进制表示为:01101011。
扩展资料
1、十进制整数转换为二进制整数原理
众所周知,二进制的基数为2,我们十进制化二进制时所除的2就是它的基数。谈到它的原理,就不得不说说关于位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘一个与数字符号有关的常数,该常数称为 “位权 ” 。
位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。二进制数就是2的n次幂。
按权展开求和正是非十进制化十进制的方法。
下面我们开讲原理,举个十进制整数转换为二进制整数的例子,假设十进制整数A化得的二进制数为edcba 的形式,那么用上面的方法按权展开, 得
A=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (后面的和正是化十进制的过程)
假设该数未转化为二进制,除以基数2得
A/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
注意:a除不开二,余下了!其他的绝对能除开,因为他们都包含2,而a乘的是1,他本是绝对不包含因数2,只能余下。
商得:(2^0)+c(2^1)+d(2^2)+e(2^3),再除以基数2余下了b,以此类推。
当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba
2、十进制小数转换为二进制小数原理
关于十进制小数转换为二进制小数
假设一十进制小数B化为了二进制小数0.ab的形式,同样按权展开,得
B=a(2^-1)+b(2^-2)
因为小数部分的位权是负次幂,所以我们只能乘2,得
2B=a+b(2^-1)
注意a变成了整数部分,我们取整数正好是取到了a,剩下的小数部分也如此。
值得一提的是,小数部分的按权展开的数位顺数正好和整数部分相反,所以不必反向取余数了。
参考资料来源:百度百科-二进制
参考资料来源:百度百科-十进制