我正在阅读一本书和其中一个问题。
编写一个程序,显示一个 float 消耗了多少内存。 在您的 Mac 上,short 是一个 2 字节的整数,一位用于保存符号(正数或负数)。它可以存储的最小数字是多少?最大的是什么? unsigned short 仅包含非负数。它可以存储的最大数字是多少?
所以我得到了关于 float 消耗多少内存的第一部分,但我不知道如何找到最小或最大的数字。谁能解释一下?
提前致谢 S.
最佳答案
让我们忘记 short 或 unsigned short。假设您有 1 个字节,即 8 位。它可以显示的最大数量是多少?每个位都有两个状态 0
或 1
。所以 8 位有 28 个组合。这是 256。现在我们有一个 0 值,所以它是 0 到 255,总共 256 个数字。现在回到你原来的问题,
你有 2 个字节,这意味着 2*8=16 位。对于带符号的 short,符号位消耗了一位。所以你总共有 15 位。这意味着 215 = 32768 种组合。但是你的符号位也有两种状态。 0 和 1。对于正数,它的范围是 0 到 32767,对于负数,它的范围是 -32768 到 0。所以带符号的 short 可以包含 -32768 到 32767 范围内的值。 现在对于 unsigned short 没有符号位。所以所有 16 位都可用。所以你有 216 = 65536 种组合。取值范围为0到65535,共65536个数字。
另请阅读 this 中的答案线程清楚地知道为什么它的范围在正数中为 32767 而在负数中为 -32768。
关于objective-c - Sizeof short——寻找最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926190/