用Python3.0做一个二进制转十进制机?

我正在用Python 3,6编写一个Python代码,该代码将提示用户输入2个小数(最多255个)或8位二进制数并将其转换为十进制,让用户输入2个标准十进制数没有问题, 也让他们输入一个二进制数字,但是一旦我打印出二进制转换,它就会显示每个二进制数字,直到十进制对应的数字,假设我输入,它会显示,1、3、7 ,15、31等,最多255

那就是我的代码,我将附上一张打印后的计算图。 在图像中,您可以看到它打印了8次,每位最多255,实际上我只希望代码将相应的十进制整数打印到用户输入的位数,例如,如果他们输入, 打印255。


只需将print()指令从for循环中移出,否则它将打印出每一步以回答您的问题。


版权声明:本文为博主原创文章,遵循 版权协议,转载请附上原文出处链接和本声明。

Python中进行进制的转换可以通过它的内置函数bin()、int()、oct()、hex()来实现。下面我们就通过实例来学习一下。
(一)比如要将一个ip地址192.167.45.1/24 (相当于子网掩码是:255.255.255.0)转换成二进制,那么我们就可以借助python来实现。

IP地址是一组能够识别主机和所在网络的编码,由32位二进制组成(等于4个字节),为了便于使用,常以xxx.xxx.xxx.xxx形式表现,每组xxx就代表小于或等于255的十进制数。由2部分组成,网络号+主机号。
那么如何得到网络号呢?
网络号就是将IP地址192.167.45.1 转换成二进制,子网掩码255.255.255.0转换为二进制,然后进行“与运算”。(“与运算”:对应为全是1结果为1,否则为0)
1、打开电脑的cmd命令窗口,然后进入Python解释器模式。
4、将步骤3的2个二进制数,进行与运算得到01.,将二进制转成十进制就是192.167.45.0,即该IP地址的网络号就是192.167.45.0
该IP地址是C类IP地址。
到这里,以上的例子就讲解完了,其中包含了①将二进制转成十进制②将十进制转成二进制。
那么接下来就继续讲一下其它进制的转换。

(三)八进制转换为二进制
举例,把八进制120转换为二进制。
①把八进制当中的所有基数,都用二进制表示出来,需要注意的是都是用3位表示,不够就前面补0。

②然后进行拼接就可以了。
那么经过计算,我们就可以获得该八进制120转换为二进制就是001 010 000
(四)十六进制转换成二进制
举例,把十六进制EF转换为二进制。
①把十六进制当中的所有基数,都用二进制表示出来,需要注意的是都是用4位表示,不够就前面补0。

②然后进行拼接就可以了。
那么经过计算,我们就可以获得该十六进制EF转换为二进制就是

我写一个函数,它接受一个参数“n”,将一个十进制转换为使用递归式的二进制数。

这是我对非递归函数,但我需要弄清楚如何将其递归编写。

想想你的基本情况。对于直接将答案写入您的程序的意义是什么意思? 0? 1?可能不只是那些;你不希望一个巨大的elif链上升到“好吧,如果它是314,我们可以只返回''”。想想你需要硬编码答案的数量是多少,作为递归的基础,以及哪些你可以并且应该有算法处理。

想想你的递归调用。如果你想产生一个n的二进制表示形式,调用dec2bin会给你最多的答案,那么你可以修改一下结果并返回它?那么,如果n大于1,则n的二进制表示是n//2的二进制表示,其中另一个数字卡在末尾,就像n的十进制表示形式为n//10的十进制表示形式,并且末尾有另一个数字。

你的代码几乎是好的。您并不需要维护bStr。假设您知道n//2的二进制表示,那么n的二进制表示是n//20的二进制表示,如果n可以被21整除。

你的代码应该是这样的。

我要回帖

更多关于 二进制十进制转换 的文章

 

随机推荐