十进制转二进制场景:如何将元素从末尾到开头存入空数组?
十进制转二进制:余数逆序存入数组的实现方法
你遇到的核心问题是:每次取余得到的是二进制的低位值,而最终需要的结果是高位到低位的顺序,调整余数存入数组的方式就能解决,下面给两种实用实现思路:
方法1:先收集余数再反转数组
先按计算顺序把所有余数(包括最后的商1)存入数组,最后通过反转数组得到正确的高位到低位顺序:
decimal_num = 65 binary_arr = [] # 循环计算余数,直到商小于等于1 while decimal_num > 1: remainder = decimal_num % 2 binary_arr.append(remainder) decimal_num = decimal_num // 2 # 把最后剩下的商(1)加入数组 binary_arr.append(decimal_num) # 反转数组,得到高位到低位的顺序 binary_arr = binary_arr[::-1] print(binary_arr) # 输出 [1, 0, 0, 0, 0, 0, 1]
方法2:直接将余数插入数组开头
每次计算出新的余数后,直接插入到数组的最前端,这样数组从始至终都是高位到低位的顺序,无需额外反转:
decimal_num = 65 binary_arr = [] while decimal_num > 0: remainder = decimal_num % 2 # 插入到数组第一个位置 binary_arr.insert(0, remainder) decimal_num = decimal_num // 2 print(binary_arr) # 输出 [1, 0, 0, 0, 0, 0, 1]
补充说明
如果需要兼容输入为0的情况,只需在开头加个判断:若输入是0,直接返回[0]即可,避免循环不执行的问题。
内容的提问来源于stack exchange,提问作者REQUIEMSONG
相关产品推荐
相关产品推荐

