我很困惑...... 8位,16位,32位和64位形式究竟是什么?

时间:2015-03-27 18:08:00

标签: swift binary int

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

  

Swift提供8,16,32和64位格式的有符号和无符号整数。

我对它们的含义感到有些困惑 该书还提到了一些具有最小值和最大值的位形式:

  

您可以使用其最小和最大属性

访问每个整数类型的最小值和最大值

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

我们通常使用十进制数字。这意味着您可以在每列中使用十个不同的数字(09)(1s10s100s ...)。因此,可以用小数表示的值的数量由10给出,以列数为单位 如果您只有两个列,则可以将00表示为99,以便100表示不同的值,或10²

除小数外,还有其他数字系统。主要区别在于他们的 base 。十进制也称为 base-10 ,因为它有十个不同的数字 二进制也称为 base-2 ,这意味着只有两个数字:01

由于数字的这种限制,我们也受限于可以为给定数量的列表示的不同值的数量。通过两列,我们可以在 base-10 中表示10²值。因此,在 base-2 中,我们可以表示值:03,或二进制0011。< / p>

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

现在8的表单(1632Int ...)指的是列数。
Int当然存储在内存中。并且由于内存是有限的,所以允许使用的列数或Int是有限的。值81632等值是Int使用的这些位数。由于这种限制,Int只能根据位数存储一系列数字。

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

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

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