日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java高位转低位注意事项,int转 short/byte溢出过程

發布時間:2024/10/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java高位转低位注意事项,int转 short/byte溢出过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對上述代碼的輸出結果有沒有人覺得是89呢,現實中看見不少直接使用java保留字進行強制高位轉低位的。

上述代碼輸出結果是21。

我們都只知道int類型占用的是32位,4字節,byte類型是占用一字節共八位,因此有符號byte最大存儲的數值是127。

從32位int強制轉換成byte類型必定要舍去高位的24位,只保留低八位。

123456789變成21的大致過程如下:

1:?? 123456789對應的二進制(原碼)是:00000111???? 01011011??? 11001101??? 00010101

2:在計算機組成原理課程中我們知道數字在計算機中是以補碼的方式存儲,正數補碼和原碼一樣,負數補碼為原碼除去符號位(最高位為符號位)之外其它位按位取反再加一,因此123456789取低八位得到的補碼就是00010101,因為得到的低八位的最高位是0,因此是正數,我們直接將其轉換為10進制就得到了21。

從上述過程我們可以知道正數高位強制轉換成低位可能出現正數變成負數的情況,因此需要謹慎將整數當成字符串類似處理 ,除非一個高位整數我們能確定強制類型轉換后不會舍去非零位,并且不會整數變成負數。如:

short a = 4;?? (00000000?? 00000100)

byte b = (byte) a; (取低八位得到00000100)

得到的數值依然是4。

總結

以上是生活随笔為你收集整理的java高位转低位注意事项,int转 short/byte溢出过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。