NSUInteger和NaN的价值?

Llu*_*uís 3 cocoa objective-c nan foundation nsuinteger

为什么NSUInteger的值为2 ^ 32 - 1而不是2 ^ 32?这个事实与纳米值的需要之间是否存在关系?这太令人困惑了.

小智 8

用手指数到10.真的:)

数到10的标准方法是1,2,3,..10(该序数每个手指的计数).然而,"0指"呢?

通常情况下,这可能表示将手放在背后,但这会给系统增加一条信息:你的手在前面(现在)还是在后面(缺失)?

在这种情况下,将双手放在背后相当于分配nil一个NSNumber变量.但是,NSUInteger表示一个本机整数类型,它没有这个额外的状态,并且仍然必须编码0才有用.

在手指上编码值0的关键是简单地计算0,1,2..9.可以使用相同数量的手指(或信息位),但是现在0可以考虑有用的......但是没有10值(仍有10个手指,但第10个手指仅表示该值9).这与无符号整数具有最大值2^n-1而不是最大值的原因相同2^n:它允许0以最高效率进行编码.

现在,NaN不是一个典型的整数值,而是来自浮点编码-想floatCGFloat.一种这样的常见编码是IEEE 754:

在计算中,NaN(不是数字)是表示未定义或不可表示值的数值数据类型值,尤其是在浮点计算中.