我很困惑... 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
谢谢!
我假设您是在谈论 Int
和 UInt
的不同形式。
首先,您必须了解值在计算机中的存储方式。您可能听说过 binary 表示法。关于该主题可以讨论很多,但这里有一个简短的解释:
我们通常使用十进制数。这意味着您可以在每一列(1s
、10s
、100s
...)中使用十个不同的数字(0
到 9
)。因此,可以用十进制表示的值的数量由 10
列数的幂给出。
如果你只有两个列,你可以表示 00
到 99
,所以 100
不同的值,或者 10²
.
现在除了十进制还有其他数字系统。主要区别在于它们的 base。十进制也被称为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
s 只能根据位数存储一定范围的数字。
所以 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.
我是编程新手,我一直在阅读 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
...)中使用十个不同的数字(0
到 9
)。因此,可以用十进制表示的值的数量由 10
列数的幂给出。
如果你只有两个列,你可以表示 00
到 99
,所以 100
不同的值,或者 10²
.
现在除了十进制还有其他数字系统。主要区别在于它们的 base。十进制也被称为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
s 只能根据位数存储一定范围的数字。
所以 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.