爲什麼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,但可能值的數量是相同的。 –