国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java中負(fù)數(shù)以及類型轉(zhuǎn)換問(wèn)題

2019-11-14 14:55:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

學(xué)習(xí)過(guò)java的都知道,在java中,不是直觀的表示負(fù)數(shù),而是采用補(bǔ)碼的形式表示負(fù)數(shù)。

這是為了硬件操作的方便,把減法也轉(zhuǎn)換成加法來(lái)運(yùn)算。
那補(bǔ)碼是怎樣表示的呢?為了得到補(bǔ)碼,我們引入了反碼。

對(duì)于正數(shù)來(lái)講,它的反碼補(bǔ)碼都為本身,如果不明白為什么,我們可以這樣理解:引入反碼補(bǔ)碼的原因就是為了解決減法的問(wèn)題,換句話數(shù)就是解決java中負(fù)數(shù)的問(wèn)題,正數(shù)不存在這些問(wèn)題,所以它的反碼補(bǔ)碼就是它本身。在有符號(hào)的基本數(shù)據(jù)類型中,最高位0表示正數(shù),最高位1表示負(fù)數(shù)。 對(duì)于負(fù)數(shù)來(lái)講,它的反碼就是除去符號(hào)位取反,然后加1就得到了它的補(bǔ)碼。
這里舉個(gè)簡(jiǎn)單的例子,一個(gè)byte型數(shù)據(jù),它在計(jì)算機(jī)中占8位,-7可以表示為10000111,最高位的1代表負(fù)號(hào),它的反碼是除去符號(hào)位各位取反為11111000,然后加1得到補(bǔ)碼11111001。

8的二進(jìn)制表示為00001000,現(xiàn)在我們運(yùn)算8 - 7,在計(jì)算機(jī)并不是用8減去7,而是用8 + (-7),也就是用00001000加上-7的補(bǔ)碼11111001,兩個(gè)有符號(hào)數(shù)相加,如果符號(hào)位相加有近位就刪去符號(hào)位的進(jìn)位,得到00000001,也就是1.
java中我們經(jīng)常也會(huì)遇到不同數(shù)據(jù)類型的轉(zhuǎn)換,這是最容易出錯(cuò)的地方。

首先我們了解一下什么是符號(hào)擴(kuò)展,對(duì)于正數(shù)來(lái)講,在前面補(bǔ)0; 負(fù)數(shù)時(shí)在前面補(bǔ)1。比如8位的二進(jìn)制數(shù)10000111擴(kuò)展為16位,我們?cè)谇懊婕由?個(gè)1,1111111110000111;如果是正數(shù),則在前面補(bǔ)0。這樣進(jìn)行擴(kuò)展后,符號(hào)和數(shù)值的大小都不變。
接下來(lái)我們我們看一下不同類型之間是怎樣轉(zhuǎn)換的,首先我們要知道這些基本類型各自占幾位。 有符號(hào)型: byte = 8   int = 32   short = 16 long = 64   float = 32   double = 64   *boolean 只占一位,用0和1代表false和true。
無(wú)符號(hào)型: char =  16
1. byte型轉(zhuǎn)為char型 因?yàn)閎yte是有符號(hào)類型,再轉(zhuǎn)成char型時(shí)需要進(jìn)行符號(hào)位擴(kuò)展,如果是正數(shù)就在前面不上8個(gè)0, 如果是負(fù)數(shù)就在前面補(bǔ)上8個(gè)1。例如11111111(0xff)左邊連續(xù)補(bǔ)上8個(gè)1結(jié)果是0xffff。因?yàn)閏har是無(wú)符號(hào)類型,所以0xffff表示的十進(jìn)制數(shù)是65535。
2. char型轉(zhuǎn)為int型 因?yàn)閏har是無(wú)符號(hào)類型,轉(zhuǎn)換成int型時(shí)進(jìn)行在前面補(bǔ)上16個(gè)0,用十進(jìn)制表示結(jié)果為結(jié)果0x0000ffff,對(duì)應(yīng)的十進(jìn)制數(shù)是65535。
3. int型轉(zhuǎn)為byte型 因?yàn)閕nt是32位,而byte類型值只占8位,直接截取最后8位。例如-1的補(bǔ)碼為0xffffffff,轉(zhuǎn)換為byte型后為0xff,值為-1。
總結(jié):如果最初的數(shù)值類型是有符號(hào)的,那么就執(zhí)行符號(hào)擴(kuò)展;如果是char類型,那么不管它要被轉(zhuǎn)換成什么類型,都執(zhí)行零擴(kuò)展。還有另外一條規(guī)則也需要記住,如果目標(biāo)類型的長(zhǎng)度小于源類型的長(zhǎng)度,則直接截取目標(biāo)類型的長(zhǎng)度。例如將int型轉(zhuǎn)換成byte型,直接截取int型的右邊8位。 下載地址 ?


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 皋兰县| 通榆县| 瑞金市| 临朐县| 方正县| 永登县| 灯塔市| 枣阳市| 安仁县| 山丹县| 古交市| 商洛市| 开封县| 鄂温| 汤阴县| 依安县| 新兴县| 永兴县| 黔江区| 乐清市| 九龙县| 胶南市| 芒康县| 徐闻县| 凤山市| 北京市| 洛隆县| 洪江市| 柘城县| 红安县| 张家港市| 昌邑市| 全南县| 梅州市| 武平县| 湖南省| 辽阳县| 佛学| 沙坪坝区| 监利县| 阜阳市|