此题,打开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