为什么在确定N位可以代表的最大数量时需要减1?

时间:2012-10-29 09:35:58

标签: binary

因此,在二进制文件中找到给定N位数的最大数字,您可以使用:

  

2 ^ N - 1

但为什么-1。为了尝试理解它我创建了一个3位系统并尝试了一些例子:

2 ^ 1 =(2) - 1

  • 0 0 1 - > 1

2 ^ 2 =(4) - 1

  • 0 1 0 - > 2
  • 0 1 1 - > 3

2 ^ 3 =(8) - 1

  • 1 0 0 - > 4
  • 1 0 1 - > 5
  • 1 1 0 - > 6
  • 1 1 1 - > 7

所有这一切都按计划进行,但为什么-1。这听起来像是一个愚蠢的问题,但正如你在上面所看到的那样,我做了大量的研究。

2 个答案:

答案 0 :(得分:1)

因为你可以代表0,它总是在所有排列中占据一个位置。

答案 1 :(得分:1)

所展示的研究应该已经揭示了答案,但你已经忘记了零。

三位能够表示2^3个不同的最小值为,因此最大必须为2^3-1

请注意,如果您使用其他系统(例如已签名的二进制文件),最小最大值可能会更改,但计数价值观没有。