Objective c 为什么可以';我没有一个短的浮动吗?

Objective c 为什么可以';我没有一个短的浮动吗?,objective-c,Objective C,我在Xcode(Objective-C)中 为什么我不能有一个短浮点数?我得到一个错误,“short float”无效我从未在C语言中见过short float short int存在,但short float没有Richard指出的意义。您可以使用如下位域实现短float: typedef struct shortFloat { char sign : 1; char exponent : 5; short significand : 10; } shortFloat;

我在Xcode(Objective-C)中


为什么我不能有一个
短浮点数
?我得到一个错误,
“short float”无效

我从未在C语言中见过short float


short int
存在,但
short float
没有Richard指出的意义。

您可以使用如下位域实现短float:

typedef struct shortFloat {
    char sign : 1;
    char exponent : 5;
    short significand : 10;
} shortFloat;

shortFloat shortFloat_add(shortFloat s1, shortFloat s2);
shortFloat shortFloat_sub(shortFloat s1, shortFloat s2);
shortFloat shortFloat_mul(shortFloat s1, shortFloat s2);
shortFloat shortFloat_div(shortFloat s1, shortFloat s2);
但是你必须自己写浮点数学


此外,在ARM targets(包括iPhone)上,您可以使用半精度浮点值,请阅读此处的GCC文档:

short
long
用于整数,浮点数的等效值为
half
double
<但是,objective-C中没有“代码>一半”(处理器没有任何处理一半长度浮点的指令),但可以在一些GPU语言中找到,如GLSL。

,因为它没有意义。浮点数(通常)实现为IEEE 754,这对“短”值没有意义。@RichardJ.RossIII IEEE 754有一个“半精度”模式,实际上只有16位。但这不会利用汇编中的浮点指令,不是吗?我猜它可以在计算过程中被编组为float,让机器决定如何计算它,然后将其解编回16位。