java int和byte轉(zhuǎn)換

int轉(zhuǎn)byte

在java中,寬類型(wider integer type)轉(zhuǎn)窄類型(narrower type)會(huì)直接將高位的字節(jié)截?cái)唷R虼?,只要寬類型的?shù)據(jù)可以被壓縮成窄類型,值就不會(huì)變。比如 int的127轉(zhuǎn)成byte后,值仍然是127。而當(dāng)int的值超出了byte的范圍(-128~127),則會(huì)發(fā)生溢出。比如int的128轉(zhuǎn)成byte后的值不是最接近它的127,而是-128。

分析

當(dāng)int轉(zhuǎn)byte時(shí),高位的數(shù)據(jù)全部被截?cái)啵?28被截?cái)嗪缶褪?0000000,而byte類型是有符號(hào)的,因此,128轉(zhuǎn)換后的結(jié)果肯定是個(gè)負(fù)數(shù)。熟悉二進(jìn)制補(bǔ)碼運(yùn)算的都知道,負(fù)數(shù)求值為取反后加1,因此10000000的值為01111111(127) + 1 = 128,因此結(jié)果是-128。

當(dāng)int的值超過(guò)256后,低位的值則都是0。此時(shí)轉(zhuǎn)換成byte后的值則恒定為0。

最后列出一個(gè)可以幫我們計(jì)算轉(zhuǎn)換值的簡(jiǎn)單算法:

int byteValue; 
int temp = intValue % 256; 
if ( intValue < 0) { 
   byteValue = temp < -128 ? 256 + temp : temp; 
} else { 
   byteValue = temp > 127 ? temp - 256 : temp; 
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java標(biāo)識(shí)符 Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識(shí)符。 規(guī)范: 所有的標(biāo)識(shí)符都應(yīng)...
    孫浩j閱讀 653評(píng)論 0 0
  • Java標(biāo)識(shí)符Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識(shí)符。規(guī)范 :所有的標(biāo)識(shí)符都應(yīng)該以...
    java部落閱讀 762評(píng)論 0 0
  • 上篇咱們介紹了java運(yùn)行過(guò)程,jdk介紹等等,最后還運(yùn)行了一個(gè)程序,我們?cè)倏匆槐椋?編譯執(zhí)行后僅僅就打出來(lái)一句H...
    馬可吃菠蘿閱讀 704評(píng)論 0 2
  • byte即字節(jié)的意思,java中的基本類型之一、也是java中長(zhǎng)度最小的基本數(shù)字類型,通常在讀取文件時(shí)需要用字節(jié)數(shù)...
    Kinsanity閱讀 1,285評(píng)論 0 5
  • 「WTF系列」深入Java中的位操作 關(guān)于WTF系列 引 學(xué)完本章節(jié)你將學(xué)會(huì)位的基礎(chǔ)概念與語(yǔ)法,并且還會(huì)一些騷操作...
    qiujuer閱讀 1,073評(píng)論 0 5

友情鏈接更多精彩內(nèi)容