我發現無符號整數在Java中很直。如果我想介紹0xFXXX XXXX,Java需要我聲明一個長變量來存儲0xFXXX XXXX,並使用4294967295(0xFFFFFFFFL)執行按位與操作。 任何人都可以將您對未簽名問題的體驗分享給他人或我?有趣的未簽名在java中
回答
可能要檢查了這一點:http://www.javamex.com/java_equivalents/unsigned.shtml
C++:
unsigned byte b = ...;
b += 100;
unsigned int v = ...;
v *= 2;
相當於Java:
int b = ...;
b = (b + 100) & 0xff;
long v = ...;
v = (v * 2) & 0xffffffffL;
當你使用無符號值,將它轉換爲類型你想,它會自然地包裹,給你正確的值:
// Example: write an unsigned int (stored in a long)
// to a byte buffer.
ByteBuffer bb = ...
long unsignedInt = ...
bb.putInt((int) unsignedInt);
在java中int
egers是32位長;然而,第一點是爲了標誌。實際上,整數只有31位長。
您的號碼是正數32位長數字;因此,它不能適應埃格爾,因此需要一個long
。
編輯:爲什麼downvote?!
整數表示爲2的補,對於簡單的8位字:
MSB 0 1 1 1 1 1 1 1 = 127 0 1 1 1 1 1 1 0 = 126 0 0 0 0 0 0 1 0 = 2 0 0 0 0 0 0 0 1 = 1 0 0 0 0 0 0 0 0 = 0 1 1 1 1 1 1 1 1 = −1 1 1 1 1 1 1 1 0 = −2 1 0 0 0 0 0 0 1 = −127 1 0 0 0 0 0 0 0 = −128
MSB,第一位有效的指示標誌
編輯2:我累了討論一個爭論點。 downvoting之前,請參閱this
這並非如此。您可以在32位有符號整型中保存32位無符號整數。無論是否簽名,只與某些操作(關注點出現)和輸出有關。然而,除此之外,無論如何,都是一樣的。這是2s補碼的好處。 – Ingo 2011-04-08 16:57:29
它在很多操作中都很重要。只有直到你將int加入long爲止,加法纔會起作用。 – 2011-04-08 17:02:24
@Ingo:運行這段代碼:'{int x = 2147483647; \t System.out.println(x + 1); X ++;的System.out.println(X); }' – CMR 2011-04-08 17:02:37
Java使用代表符號整數的最常用的方法 - Two's complement
- 1. 是否有可能在java中有一個未簽名的ByteBuffer?
- 2. Java中的未簽名字節CRC32
- 3. 在MySQL中籤名或未簽名
- 4. Java和未簽名字節
- 5. Java,從文件中讀取簽名和未簽名
- 6. 未簽名簽名的jar
- 7. 簽名/未簽名的情況下C#轉換爲Java
- 8. Java中有趣的線程行爲
- 9. Stackoverflow的有趣的標籤實現
- 10. 在MySQL中籤名和未簽名的區別?
- 11. 已簽名未簽名Applets/Java Web Start,Socket連接?
- 12. 在java中未定義的標籤android
- 13. 如何簽名未簽名的IPA?
- 14. CRC32與在java中籤名的字節
- 15. JNLP:在簽名代碼中加載未簽名代碼
- 16. CGI在Java中 - 傳統而有趣的(教育目的)
- 17. 爲什麼Java Web Start說簽名的jar文件是未簽名的?
- 18. Java字符串比較有趣的bug
- 19. WAS 6.1,Java 5中:有趣的問題 - 用字請求「CD」未達到該servlet
- 20. RSA與數字簽名在Java中
- 21. C++中的有趣情況
- 22. Eclipse中有趣的「bug」
- 23. java簽名和簽名數據
- 24. 驗證Java簽名類簽名與OpenSSL
- 25. 未簽名的-1 = -1簽署
- 26. Java中的自簽名證書 - 簽名XML文件
- 27. 在Java中生成RSA簽名但在C++中驗證簽名失敗
- 28. nasm中未簽名的劃分
- 29. xcode 6中的未簽名IPA
- 30. 在Django中扮演有趣的按鈕
Java沒有無符號類型,你需要考慮那些自己。如果你假設沒有簽名,那麼,好吧,不要。作爲幫手,Google確實爲其公有領域Guava庫(http://code.google.com/p/guava-libraries/)中的位操作提供了便捷方法,並檢查了SignedBytes和UnsignedBytes。 – Esko 2011-04-08 16:50:42
這太有趣了 - 可能javac確實允許int unsigned = 0xfeefabba;它不需要聲明一個長變量。 – Ingo 2011-04-08 17:20:37
感謝您共享的Esko,番石榴圖書館真棒〜 – Peica 2011-04-08 17:32:27