You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

技术问询:求含4个0的奇数二进制数及8位奇数或含4个0的数的数量

二进制数计数问题解答

问题1:有多少个包含4个0的奇数二进制数?

咱们默认这里讨论的是8位二进制数(和问题2的范围保持一致)。首先,奇数二进制数的核心特征是最低位必须为1,这就把最后一位的取值固定死了。

现在要求整个数包含4个0,而最低位已经是1了,所以剩下的前7位里必须恰好有4个0(毕竟总0的数量是4)。这就转化成了组合问题:从7个位置里选4个来放0,剩下的位置自然填1就行。计算组合数可得:
C(7,4) = 35
(注:C(n,k)表示从n个元素中选k个的组合数,C(7,4)=C(7,3)=35

问题2:有多少个8位二进制数是奇数或恰好有4位为0?

你提到的容斥原理完全正确!公式就是:
$$Odd \cup FourZeros = Odd + FourZeros - Odd \cap FourZeros$$
咱们一步步拆解验证:

  • Odd(8位奇数二进制数的数量):你说的没错,最低位必须是1,剩下7位每位都可以是0或1,所以数量是2^7 = 128
  • FourZeros(恰好有4位为0的8位二进制数的数量):从8个位置里选4个放0,剩下的填1,组合数是C(8,4)=70,这部分你也分析对了。
  • Odd ∩ FourZeros(既是奇数又恰好有4位为0的8位二进制数的数量):这其实就是问题1的答案!因为既是奇数(最低位为1)又有4个0,意味着前7位需要恰好有4个0,数量是C(7,4)=35

把这些数值代入容斥公式计算:
128 + 70 - 35 = 163
所以满足条件的8位二进制数总共有163个。

内容的提问来源于stack exchange,提问作者julianstanley

火山引擎 最新活动