我發現無符號整數在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中
- 3. Java中的未簽名字節CRC32
- 4. Java中的未簽名運算符
- 5. 在MySQL中籤名或未簽名
- 6. Java和未簽名字節
- 7. Java,從文件中讀取簽名和未簽名
- 8. 未簽名簽名的jar
- 9. Java中有趣的線程行爲
- 10. 簽名/未簽名的情況下C#轉換爲Java
- 11. 已簽名的Java Applet未運行
- 12. Java 1.7.0_40和未簽名的Applet
- 13. Stackoverflow的有趣的標籤實現
- 14. 未簽名並在C中籤名的行爲
- 15. 在MySQL中籤名和未簽名的區別?
- 16. 已簽名未簽名Applets/Java Web Start,Socket連接?
- 17. 在clickonce中使用未簽名的dll
- 18. 在java中未定義的標籤android
- 19. 簽名與未簽名的解釋
- 20. 如何簽名未簽名的IPA?
- 21. 簽名與未簽名的apk:classDeffNotFound
- 22. 如何在Java中提取簽名包的簽名?
- 23. Java 8:在資源中找到未簽名條目
- 24. 在Java中的HMAC SHA1簽名
- 25. CRC32與在java中籤名的字節
- 26. CGI在Java中 - 傳統而有趣的(教育目的)
- 27. JNLP:在簽名代碼中加載未簽名代碼
- 28. 有趣的插入用戶名查詢
- 29. 有趣的Java列表包含查詢
- 30. Java字符串比較有趣的bug
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