Skip to main content
 首页 » 操作系统

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

2024年01月01日59zfyouxi

我是编程新手,我一直在阅读 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

谢谢!

请您参考如下方法:

我假设您是在谈论 Int 和 UInt 的不同形式。

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

我们通常使用十进制数。这意味着您可以在每一列(1s、10s、 100s...)。因此,可以用十进制表示的值的数量由 10 的列数次方给出。
如果您只有两个列,您可以表示 00 到 99,所以 100 不同的值,或 10²。

现在除了十进制之外还有其他数字系统。主要区别在于它们的基础。十进制也称为 base-10,因为它有十个不同的数字。
二进制也称为 base-2,表示只有两个数字:0 和 1。

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

要获得更深入的解释,请查看此 video出。

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

所以 UInt8 有 8 位,因此 8 列,并且可以存储 2^8 值: 0 到 255。
Int32 有 32 位,可以存储 2^32 值:-2,147,483,648 到 2,147,483,647.

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

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