题目解析
-
思路
将输入的十进制数
N转换为二进制字符串,使用bin(N)[2:]二进制表示(去掉前面的'0b')。 然后用zfill(len(bin(N)[2:]))把二进制字符串补齐到合适的位数,因为反码需要相同位数。通过列表推导式和join方法生成反码对应的二进制字符串,把原二进制字符串中的0变为1,1变为0。 用int(reverse_bin, 2)将反码二进制字符串转换回十进制数并返回。 -
代码
bin(N)[2:].zfill(len(bin(N)[2:])):bin(N)将十进制数N转换为二进制字符串,[2:]去掉前面的'0b',zfill(len(bin(N)[2:]))将字符串左边填充0,使其长度与原二进制字符串长度相同。"".join('1' if bit == '0' else '0' for bit in bin_num):是生成器表达式,遍历bin_num中的每个字符,如果是0就替换为1,如果是1就替换为0,然后通过join方法将这些替换后的字符连接成新的字符串。int(reverse_bin, 2):reverse_bin二进制字符串转换为十进制数,第二个参数2是输入的是二进制数。总结
- 知识点 二进制与十进制的转换:用
bin()函数将十进制数转换为二进制字符串(需要注意去掉前面的'0b'),使用int(binary_str, 2)可以将二进制字符串转换回十进制数。 字符串的处理方法:zfill()用于填充字符串,join()用于连接字符串列表或生成器。 列表推导式(或生成器表达式)在字符串处理中的应用:根据条件生成新的字符序列。 - 二进制与十进制的转换,理解转换关系有助于处理底层数据表示相关的问题。字符串处理方法在很多文本处理场景中非常有用,
zfill可以保证数据格式的一致性,join可以灵活地构建新字符串。 列表推导式(生成器表达式)提供了一种简洁高效的方式来生成新的数据序列,减少了循环和临时变量的使用。 3. 二进制与十进制转换,多做练习题,手动计算不同数字的转换,加深理解。 字符串处理方法需要记住常用方法的功能和用法,列表推导式(生成器表达式)可以从简单的条件生成开始练习,逐渐掌握复杂的表达式构建,并且对比使用循环实现相同功能的代码。
- 知识点 二进制与十进制的转换:用