计算机内存的基本单元是位( bit )。可以将位看作电子开关,可以开,也可以关。关表示值 0 ,开表示值 1 。8 位的内存块可以设置出  256  种不同的组合,因为每一位都可以有两种设置,所以 8 位的总组合数为 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 ,即 256 。因此, 8 位单元可以表示  0 -255  或者 -128  到  127  。每增加一位,组合数便加倍。这意味着可以把 16 位单元设置成 65 536 个不同的值,把 32 位单元设置成 4 294 672 296 个不同的值,把 64 位单元设置为 18 446 744 073 709 551 616 个不同的值; 作为比较, unsigned long 存储不了地球上当前的人数和银河系的星星数,而 long long 能够。

  字节( byte )通常指的是 8 位的内存单元。从这个意义上说,字节指的就是描述计算机内存量的度量单位, IKB 等于 1024 字节,1MB 等于 1024KB 。然而, C + +对字节的定义与此不同 。 C + +字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说,可能取值的数目必须等于或超过字符数目。在美国,基本字符集通常是 ASCll 和 EBCDIC 字符集,它们都可以用 8 位来容纳,所以在使用这两种字符集的系统中,c++字节通常包含8位。然而,国际编程可能需要使用更大的字符集,如Unicode,因此有些实现可能使用16位甚至32位的字节。有些人使用术语八位组(octet)表示 8 位字节。

       (节选自C++ primer plus 39页)