[Python3] 3×4096+14×256+5×16+17二进制包含多少个 1?

此题,打开pythonIDLE,输入代码

num = 3 * 2**12 + 7 * 2**9 + 3 * 2**5 + 1
print(bin(num))

输出结果:

0b11111001100001

数一下,共有8个1,所以是8个

如果用笔算,我给出一个算法

PS:python使用**表示^

【第一步:整理成标准形式,获得基准位】

(这里的规则是能合并尽量合并,基准位的因子为一定为奇数,如下面为3、7、3、1)

3×4096+14×256+5×16+17 = 3* 2**12 + 7 * 2**9 + 3 * 2**5 + 2**0

这样就得到了二进制的标准位表达,然后再以对应的位为基准进行计算即可:

例如这里有了4个新的基准,分别是2**12、2**9、2**5、 2**0

扫描二维码关注公众号,回复: 6529444 查看本文章

【第二步:画图,将每位的权值标上】

【第三步:然后将上面的四个基准对号入座】

【第四步,将上面的四个因子10进制转2进制,处理进位,得到结果】

这里没有进位需要合并,所以最后就是图中的2 + 3 + 2 + 1 = 8个1

猜你喜欢

转载自blog.csdn.net/chenhanxuan1999/article/details/92597260