用n位表示多少个值?

Sea*_*ean 40 binary bits

例如,如果n=9,那么有多少个不同的值可以用9个二进制数字(位)表示?

我的想法是,如果我将这9位中的每一位设置为1,我将使这9位数能够表示的最高数字.因此,最高值1 1111 1111等于511十进制.因此,我得出结论,二进制的9位数可以表示511个不同的值.

我的思维过程是否正确?如果没有,有人可以解释我错过了什么吗?我怎样才能将它推广到n比特?

Nul*_*ion 51

2 9 = 512个值,因为这是你可以拥有多少个零和一个组合.


但是,这些值代表的含义取决于您使用的系统.如果它是无符号整数,您将拥有:

000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)
Run Code Online (Sandbox Code Playgroud)

二进制补码中,通常用于表示二进制中的整数,您将拥有:

000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1
Run Code Online (Sandbox Code Playgroud)

通常,使用k位可以表示2 k值.它们的范围取决于您使用的系统:

无符号:0到2 k -1有
符号:-2 k-1到2 k-1 -1

  • 但无论如何,*不同值*的数量总是2 ^ k (11认同)

Sam*_*ens 10

你错过了什么:零是一个价值