Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 在确定N位可以代表的最大数量时,为什么需要负1?_Binary - Fatal编程技术网

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

Binary 在确定N位可以代表的最大数量时,为什么需要负1?,binary,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-->3 2^3=(8)-1 1 0-->4 1 0 1-->5 1 10-->6 1-->7 所以一切都按计划进行,但为什么是-1。这听起来可能是个愚蠢的问题,但正如你在上面看到的,我已经做了大量的研究。因为你可以表示0,它总是占据所有排列中的一个

因此,在二进制中,要找到表示给定N个比特数的最大数,可以使用:

2^N-1

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

2^1=(2)-1

  • 0 0 1-->1
2^2=(4)-1

  • 0 1 0-->2
  • 0 1-->3
2^3=(8)-1

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

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

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

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

三位可以表示不同的值。最小值为零,因此最大值必须为
2^3-1

请注意,如果使用不同的系统(如有符号二进制),则最小值和最大值可能会更改,但值的计数不会更改