我很困惑... 8、16、32 和 64 位格式到底是什么?

I'm confused... What exactly are 8, 16, 32, and 64 bit forms?

我是编程新手,我一直在阅读 The Swift Programming Language。在他们关于整数的段落中,我看到了一些关于 8、16、32 和 64 位形式的内容:

Swift provides signed and unsigned integers in 8, 16, 32, and 64 bit forms.

我有点搞不懂它们是什么。
书中还提到了那些具有最小值和最大值的位形式:

You can access the minimum and maximum values of each integer type with its min and max properties

谢谢!

我假设您是在谈论 IntUInt 的不同形式。

首先,您必须了解值在计算机中的存储方式。您可能听说过 binary 表示法。关于该主题可以讨论很多,但这里有一个简短的解释:

我们通常使用十进制数。这意味着您可以在每一列(1s10s100s...)中使用十个不同的数字(09)。因此,可以用十进制表示的值的数量由 10 列数的幂给出。
如果你只有两个列,你可以表示 0099,所以 100 不同的值,或者 10².

现在除了十进制还有其他数字系统。主要区别在于它们的 base。十进制也被称为base-10,因为它有十个不同的数字。
二进制也叫base-2,意思只有两个数字:01.

由于这个数字限制,我们也限制了可以为给定数量的列表示的不同值的数量。通过两列,我们能够在 base-10 中表示 10² 个值。所以在 base-2 中我们可以表示 值:03,或者二进制 0011.

如需更深入的解释,请查看此 video

现在Int的形式(81632...)指的是列数。
Int当然是存在内存中的。由于内存是有限的,因此允许使用的列数或 Int 是有限的。值 81632 等是这些位数,由 Int 使用。由于此限制,Ints 只能根据位数存储一定范围的数字。

所以 UInt88 位,因此 8 列,并且可以存储 2^8 个值:0255
Int3232 位,可以存储 2^32 个值:-2,147,483,6482,147,483,647

现在 IntUInt 之间的区别很简单。 Int 可以表示正数和负数,而 UInt 只能表示非负数(所以所有大于或等于 0 的东西)。

我不打算解释负二进制数。如果您有兴趣,请查看 Two's Complement.