短期寻找最小值的大小

时间:2014-04-08 01:50:13

标签: objective-c c sizeof

我正在读一本书,其中一个问题就是。

编写一个程序,显示浮点数占用的内存量。 在Mac上,short是2字节整数,一位用于保持符号(正数或负数)。它可以存储的最小数量是多少?什么是最大的?无符号短线仅包含非负数。它可以存储的最大数量是多少?

所以我得到第一部分关于浮点数消耗多少内存,但我不知道如何找到最小或最大的数字。有人可以解释一下吗?

先谢谢 S上。

2 个答案:

答案 0 :(得分:1)

让我们忘掉简短或无符号短信。假设您有1个字节,即8位。它可以呈现的最大数量是多少?每个位都有两个状态01。因此,8位具有2 8 个组合。这是256.现在我们有一个0值,所以它的0到255,总共256个数字。现在回到你原来的问题,

你有2个字节,这意味着2 * 8 = 16位。对于有符号的短路,符号位消耗一位。所以总共有15位。这意味着2 15 = 32768总组合。但你的标志位也有2个状态。 0到1.正数为0到32767,负数为-32768为0.因此,有符号的短可以保持-32768到32767的范围。 现在对于无符号短路,没有符号位。因此所有16位都可用。所以你有2 16 = 65536组合。值范围为0到65535,总共65536个数字。

同时阅读this帖子中的答案,明确了解为什么其范围32767为正,但-32768为负。

答案 1 :(得分:0)

#include <stdio.h>
#include <limits.h>

int main(){
    printf("how much memory a float consumes?\n");
    printf("%d byte\n", (int)sizeof(float));//%zu
    printf("what is the smallest number of short?\n");
    printf("%hd\n", SHRT_MIN);
    printf("What is the largest?\n");
    printf("%hd\n", SHRT_MAX);
    printf("What is the largest number of unsigned short?\n");
    printf("%hu\n", USHRT_MAX);

    return 0;
}
相关问题