我是编程的新手,我一直在阅读The Swift Programming Language。在他们关于整数的段落中,我看到了一些关于8,16,32和64位形式的东西:
Swift提供8,16,32和64位格式的有符号和无符号整数。
我对它们的含义感到有些困惑 该书还提到了一些具有最小值和最大值的位形式:
您可以使用其最小和最大属性
访问每个整数类型的最小值和最大值
谢谢!
答案 0 :(得分:3)
我假设您正在谈论Int
和UInt
的不同形式。
首先,您必须了解值如何存储在计算机中。你可能听说过binary代表。关于这个主题可以讨论很多,但这里有一个简短的解释:
我们通常使用十进制数字。这意味着您可以在每列中使用十个不同的数字(0
到9
)(1s
,10s
,100s
...)。因此,可以用小数表示的值的数量由10
给出,以列数为单位
如果您只有两个列,则可以将00
表示为99
,以便100
表示不同的值,或10²
。
除小数外,还有其他数字系统。主要区别在于他们的 base 。十进制也称为 base-10 ,因为它有十个不同的数字
二进制也称为 base-2 ,这意味着只有两个数字:0
和1
。
由于数字的这种限制,我们也受限于可以为给定数量的列表示的不同值的数量。通过两列,我们可以在 base-10 中表示10²
值。因此,在 base-2 中,我们可以表示2²
值:0
到3
,或二进制00
到11
。< / p>
要获得更深入的解释,请查看video。
现在8
的表单(16
,32
,Int
...)指的是列数。
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。