为什么NSUInteger 2^32 - 1的值而不是2^32?这个事实和南方价值的需求之间有什么关系吗?这很混乱。NSUInteger和NaN的价值?
回答
数到10在你的手指上。真的:)
计数到10的标准方法是1,2,3,..10
(每个手指的ordinality计数)。但是,“0指”怎么样?
通常情况下,可能代表了把你的手我们的背后,但这增加另一一条信息给系统:在前面(存在)或后面(失踪)你的手?
在这种情况下,将双手放在背后将相当于将nil
分配给NSNumber
变量。然而,NSUInteger
表示不有这种额外的状态和仍然必须编码0是有用的原生整数类型。
编码在你的手指值为0的关键是简单地数0,1,2..9
代替。相同数量的手指(或信息位)可供选择,但现在有用0
可占..在不具有10
值(还有10个手指,但10日的手指仅代表价值为代价9
)。这与无符号整数的最大值为2^n-1
而不是2^n
的原因相同:它允许0
以最大效率进行编码。
现在,NaN
是不典型的整数值,而是来自浮点编码 - 想float
或CGFloat
。一种这样的共同的编码是IEEE 754:
在计算中,NaN时,静置不是一个数字,是表示未定义的或不可表示的值的数字数据类型的值,特别是在浮点计算..
“但NSUInteger只是本地整数类型的包装对象” - euh。不。这是一个int型或long型的typedef,它不是一个对象。因为'nil'是一个指针,所以你不能指定'nil'。 – 2012-12-03 20:41:13
@ H2CO3是的,我错了:(我把它和NSNumber混淆了,谢谢你指出来 – 2012-12-03 20:44:14
不客气:) – 2012-12-03 20:46:16
2^32-1因为计数从0开始计数。如果更容易将其视为2^32 - 2^0。
不能存储2^32在4个字节,但是如果减去一个,然后它适合(结果为0xffffffff)
这是一个32位无符号整型变量可以容纳最大价值。添加一个,它会绕到零。
其原因是,最小的无符号数为零,没有之一。想一想:你可以放进小数点后四位的最大数字是9999,而不是10000,那是10^4-1。
更具体地说,“它将绕回零“如果你在C中尝试它,因为下一个更大的值不适合。在数学上,2 ** 32 - 1的下一个较大值是2 ** 32。如果你用二进制编写,那么它是1,然后是32个零(就像10 ** 3,在基数10中,是1后面跟着三个零 - 或1000)。 1后跟32个零是33个数字,显然不适合32位二进制数字(32 *位*)空间。可以容纳的最大值是少一个:2 ** 32 - 1. –
完全一样的原因,在您的汽车的里程表显示最大的999999英里/公里(假设6位数字) - 同时有10^6个可能的值不能显示10^6本身,而是从0到10的6次方-1。
- 1. NaN的价值,在串
- 2. 的JavaScript返回NaN的价值
- 3. 更改函数返回NaN的价值
- 4. python nan和inf值
- 5. NSNotFound,NSInteger,NSUInteger和NSRange.location
- 6. NSUInteger与NSUInteger不兼容?
- 7. 特征值NaN和inf
- 8. 子弹物理和NAN值
- 9. 约NSUinteger问题和int
- 10. NSUInteger中错误的值。为什么?
- 11. Pyspark获得最大的价值排除NaN的
- 12. 通过parseInt函数()和的toLocaleString Internet Explorer中返回NaN在解析时价值
- 13. 为什么我的价值继续作为“NaN”返回?
- 14. MATLAB给了我NAN的价值,不知道为什么
- 15. 变量返回NaN的价值 - 无法找出原因
- 16. 如何避免CTC培训中的NAN价值?
- 17. 的价值和CSS
- 18. 使用NSUInteger和NSMutableDictionary在iOS中进行值转换的问题
- 19. nan,NaN和NAN有什么区别
- 20. h2o.automl:leaderboerd中的NaN值
- 21. 掌握的NaN值
- 22. getNours()时的NaN值
- 23. int,NSInteger和NSUInteger之间的区别
- 24. 填写NaN值
- 25. Long值为NaN
- 26. Python:numpy.insert NaN值
- 27. NSString到NSUInteger
- 28. MPMediaItemCollection Count - NSUInteger
- 29. NSUInteger在iOS7
- 30. 使用NSUInteger
此外,通过编程打交道时,你的思维转移到从0到n-1(n个状态)计算,而不是1到n的思考。这将对你有所帮助(例如:处理数组,这个问题等等) – RonaldBarzell
Nit:没有'NaN'整数值。 NSUInteger!= NSFloat。 – 2012-12-03 19:58:00
因为也是零需要,你可以从1到2^32包括在内。他们选择从0到2^32-1,但可能值的数量是相同的。 –