亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中聲明一個unsigned int

在Java中聲明一個unsigned int

UYOU 2019-11-26 11:11:28
有沒有辦法在Java中聲明一個無符號的int?或也可以這樣構想這個問題:Java的unsigned等同于什么?只是為了告訴您上下文,我正在查看Java的實現String.hashcode()。我想測試整數是否為32 unsigned int時發生沖突的可能性。
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

Java沒有無符號整數的數據類型。


如果需要存儲較大的值,可以定義一個,long而不是一個int。


您也可以使用帶符號的整數,就好像它是無符號的一樣。二進制補碼表示法的好處在于,對于有符號和無符號整數,大多數操作(例如加法,減法,乘法和左移)在二進制級別上都是相同的。但是,一些操作(除法,右移,比較和轉換)是不同的。從Java SE 8開始,Integer該類中的新方法允許您完全使用int數據類型來執行無符號算術:


在Java SE 8和更高版本中,可以使用int數據類型表示無符號的32位整數,其最小值為0,最大值為2 ^ 32-1。使用Integer類可將int數據類型用作無符號整數。像靜態方法compareUnsigned,divideUnsigned等已被添加到Integer類支持算術運算的無符號整數。


請注意,int變量在聲明時仍然是帶符號的,但是現在可以通過使用Integer類中的這些方法來進行無符號算術運算。


查看完整回答
反對 回復 2019-11-26
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

一個int值是帶符號的還是無符號的,取決于位的解釋方式-Java將位解釋為帶符號的值(它沒有無符號的原語)。


如果您有一個要解釋為無符號值的整數(例如,從知道包含無符號值的DataInputStream讀取一個整數),則可以執行以下技巧。


int fourBytesIJustRead = someObject.getInt();

long unsignedValue = fourBytesIJustRead & 0xffffffffl;

請注意,十六進制字面量是一個長字面量,而不是整數字面量是很重要的,因此末尾為“ l”。


查看完整回答
反對 回復 2019-11-26
  • 3 回答
  • 0 關注
  • 1535 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號