每个人的Python:数学、算法和游戏编程训练营
上QQ阅读APP看书,第一时间看更新

4.1.1 编程实现——二进制求和

现在,输入两个二进制表示的字符串类型的数值,尝试编程计算它们相加的和。需要注意,输入的二进制字符串不为空,并且只包含0和1两种字符。

只要我们了解了进制在数学运算中的本质与原理,解决本题其实非常简单。首先,加法运算可以从右向左进行,处于相同位的数字进行相加,如果两个运算数的位数不同,则较小的数的空白位可以用0补齐。对于二进制,其本质是逢二进一,我们在运算时,可以采用一个变量记录是否进位,根据二进制的法则从右向左计算即可。

示例代码如下:

上面的解题思路非常清晰,但是对于Python编程来说,我们无须处理这么多逻辑,巧妙地使用Python内置的函数,本题的解法将变得极致简洁,示例如下:

如以上代码所示,int函数用来将字符串转换为数值,之前我们在使用这个方法时,默认都是十进制,因此没有设置进制参数,这个函数的第2个参数可以设置要使用的进制模式。bin函数也是一个非常强大的函数,其可以将某个数值转换成以二进制表达的字符串,但是需要注意,二进制的字符串会以0b开头。借助Python中的这两个函数,我们可以进行二进制加法运算,并且将运算的结果转换成二进制的字符串返回。

内置函数无非就是编程语言包内默认提供了的函数,使用编程语言的基本能力我们自己也可以实现这类函数,你能否尝试自主实现一个和内置bin函数一样功能的函数?