溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中的強(qiáng)制類型如何轉(zhuǎn)換大數(shù)轉(zhuǎn)小數(shù)

發(fā)布時間:2021-10-15 17:00:13 來源:億速云 閱讀:311 作者:柒染 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Java中的強(qiáng)制類型如何轉(zhuǎn)換大數(shù)轉(zhuǎn)小數(shù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

首先要明確一下轉(zhuǎn)換規(guī)則:大數(shù)轉(zhuǎn)小數(shù),多出的高位部分會被截斷。比如 int 占 4個byte(32 bit), byte占 1個byte(8bit), 那int 轉(zhuǎn) byte ,int 高位多出的那24個bit會被截斷。

例1:

int b = 233; // 正整數(shù)強(qiáng)轉(zhuǎn)System.out.println((byte)b);// 原碼:   0000 0000  0000 0000  0000 0000  1110 1001// 補(bǔ)碼(內(nèi)存):0000 0000  0000 0000  0000 0000  1110 1001 // 正數(shù)的原碼、反碼、補(bǔ)碼都一樣// 截取...// 補(bǔ)碼(截取后-內(nèi)存):1110 1001 // 最高位是 1,說明是負(fù)數(shù),因此在顯示的時候還需要做轉(zhuǎn)化...// 反碼:      1110 1000 // 原碼:      1001 0111 // 16+4+2+1 = -23 (注意符號位是 1,是負(fù)數(shù))

例2:

int b = -233; // 負(fù)整數(shù)強(qiáng)轉(zhuǎn)System.out.println((byte)b);// 原碼:    1000 0000  0000 0000  0000 0000  1110 1001 // 因?yàn)槭秦?fù)數(shù),所以符號位是 1 // 反碼:    1111 1111  1111 1111  1111 1111  0001 0110 // 負(fù)數(shù)的反碼,符號位不變,其它位取反// 補(bǔ)碼(內(nèi)存):  1111 1111  1111 1111  1111 1111  0001 0111 // 負(fù)數(shù)的補(bǔ)碼等于它的反碼 + 1    // 截取...// 補(bǔ)碼(截取后-內(nèi)存):0001 0111 // 最高位是0,說明是正數(shù),正數(shù)的原碼、反碼、補(bǔ)碼都一樣 // 原碼:      0001 0111 // 16+4+2+1 = 23

Note:

1. 數(shù)字在內(nèi)存中進(jìn)行計算的時候始終是以補(bǔ)碼的形式進(jìn)行的,但是顯示給我們用戶看的時候卻是以原碼的形式展示的,因此在運(yùn)算之前必須先轉(zhuǎn)換成補(bǔ)碼的形式。2. int 轉(zhuǎn) byte, 截斷的是高位的24個bit, int 轉(zhuǎn) short, 截斷的則是高位的16個bit,依此類推。

關(guān)于Java中的強(qiáng)制類型如何轉(zhuǎn)換大數(shù)轉(zhuǎn)小數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI