2
A
回答
0
如果F#會將它轉換爲你,那麼-1UL將起作用。如果不是那麼你可以指定它爲0xFFFFFFFFFFFFFFFFUL並添加一個註釋來記住它是-1。
目前還沒有安裝F#工具,所以我無法驗證這一點。
5
讓我留下一個事實,即你不能用一個只能存儲正值(當然是零)的數據類型來表示一個負值。
另一方面,如果您將其存儲在有符號值中,則-1會作爲所有位設置存儲。
所以基本上,我會假設你想要找到一種方法來表示-1作爲一個符合值的符合-1的位方式值。
然後,值將在C#和C/C++語法中爲0xffffffffffffffff。到底如何在F#中指定我不知道。
3
我根本不知道F#,但是如果它與其他語言一樣,UInt64 不能爲。永遠。 UInt表示無符號整數,這意味着它只能表示正值。
0
如果你想要去的一個符號int:
-1: int64
,但你不能爲負數匹配爲uint,正如其他人說。
1
那麼你可以指定它-1,並在大多數架構中存儲2的補碼。簽名和未簽名的內容實際上只用於類型檢查。硬件沒有負面信號。
我不知道f#類型檢查器是否足夠聰明,知道詞法常量-1是負數,不應放在uint64中。
C肯定不在乎。當一個類型與ü這意味着無符號開始 :
#include <stdio.h>
#include <inttypes.h>
main()
{
uint64_t x = -1;
printf("0x%x\n", x); // 0xffffffff
}
3
爲了擴大對其他的答案。什麼有符號/無符號的意思是這樣的:
數字存儲使用一定數量的位。在int64和uint64的情況下,使用64位。如果數字有符號,第一位不作爲數字本身的一部分,只有其他63位。該位用於說明該數字是否爲負值。如果數字是無符號的,則包含第一位的所有位都用作數字的一部分,並且數字始終爲非負數(即:爲正數或0)。
6
> match 0UL-1UL with
- |System.UInt64.MaxValue -> "-1"
- |_ -> "???"
- ;;
val it : string = "-1"
相關問題
- 1. 在R中匹配句子和句子?
- 2. 匹配句子
- 3. 如何在句子和listdown匹配的句子蟒蛇
- 4. WHERE子句如果匹配
- 5. MYSQL:在WHERE子句中匹配n-1個條件的方法
- 6. Powershell匹配子句
- 7. 如何確定匹配的IN子句中的極限值
- 8. 如何匹配行尾的句子?
- 9. 將單詞列表與句子匹配
- 10. 特定句子之外的匹配詞
- 11. 如果句子中有多於1個空格,我如何將句子中的空格數減少爲1?
- 12. 去不匹配的類型UINT64和INT32
- 13. 如何將UInt64轉換爲Int64?
- 14. 如何將ASCII碼轉換爲uint64?
- 15. 如何將unsigned int轉換爲uint64
- 16. 如何在onetomany類定義中定義where子句
- 17. 如何將用戶定義的函數替換爲SELECT子句?
- 18. 如何在Scala「匹配」語句中匹配類?
- 19. 如何顯示在子句中不匹配的所有值?
- 20. 如何在Flink中使用模式匹配where子句?
- 21. preg_match_all匹配整個句子
- 22. SQL:LIKE子句匹配值
- 23. 爲什麼Where子句中的(1 = 1)?
- 24. 如何將UInt64變成AnyObject?
- 25. 正則表達式匹配的特定詞在句子中
- 26. 在Haskell的FGL中如何實現'匹配'爲O(1)?
- 27. 如何在HQL中的「like」子句中轉義通配符?
- 28. 將SQL MAX限制爲匹配WHERE子句的行
- 29. 爲什麼「UInt64(1 << 63)」崩潰?
- 30. 匹配多個報價在句子
像C這樣的語言將允許將-1放置在uint64_t中。由於2的補碼可以被認爲是一個正數。 – 2009-07-25 20:27:48
那麼,您可以將代表-1的位模式存儲爲無符號整數變量的有符號整數。但是,使用該值會將其解釋爲正數,超出signed int的上限。 – 2009-08-03 16:52:26