【问题标题】:I'm confused... What exactly are 8, 16, 32, and 64 bit forms?我很困惑...... 8、16、32 和 64 位格式到底是什么?
【发布时间】:2015-03-27 18:07:59
【问题描述】:

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

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

我对它们是什么感到有些困惑。
这本书还提到了一些关于具有最小值和最大值的位形式:

您可以通过 min 和 max 属性访问每个整数类型的最小值和最大值

谢谢!

【问题讨论】:

  • 请引用您不清楚的陈述。 “我看到了一些关于......”“这本书也提到了一些......”非常模糊。

标签: swift binary int


【解决方案1】:

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

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

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

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

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

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

现在Ints 的形式(81632...)指的是列数。
Ints 当然存储在内存中。并且由于内存是有限的,列数或,允许使用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

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多