真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java后兩位取反代碼 Java 取反

Java 取反運(yùn)算符

用以下代碼可以實(shí)現(xiàn)你要求的功能:

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),桑珠孜網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:桑珠孜等地區(qū)。桑珠孜做網(wǎng)站價(jià)格咨詢:13518219792

long lang=64509;

String str1=Long.toBinaryString(lang);//將給定的數(shù)轉(zhuǎn)為二進(jìn)制字串

String str2=Long.toBinaryString(~lang);//將給定的數(shù)取反轉(zhuǎn)為二進(jìn)制字串

//將取反后的二進(jìn)制串取最后的 長度與第一個(gè)串長度相等 的子串,這是我們需要的二進(jìn)制串

String str=str2.substring(str2.length()-str1.length());

//將它轉(zhuǎn)換為十進(jìn)制整數(shù)

int i=Integer.parseInt(str, 2);

System.out.println(i);

具體理論知識(shí)如下所示:

先要理解一些概念:

在2進(jìn)制中,負(fù)數(shù)是以它正值的補(bǔ)碼形式表達(dá)

原碼:一個(gè)整數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),稱為原碼。

比如 0000 0000 0000 0000 0000 0000 0000 0101是 5的 原碼。

反碼:將二進(jìn)制數(shù)按位取反,所得的新二進(jìn)制數(shù)稱為原二進(jìn)制數(shù)的反碼。

取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

比如:將5的二進(jìn)制表達(dá)式的每一位取反,得

1111 1111 1111 1111 1111 1111 1111 1010

稱:1111 1111 1111 1111 1111 1111 1111 1010 是 0000 0000 0000 0000 0000 0000 0000 0101 的反碼。

反碼是相互的,所以也可稱:

1111 1111 1111 1111 1111 1111 1111 1010 和 0000 0000 0000 0000 0000 0000 0000 0101 互為反碼。

補(bǔ)碼:反碼加1稱為補(bǔ)碼。

也就是說,要得到一個(gè)數(shù)的補(bǔ)碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補(bǔ)碼。

那么,5的補(bǔ)碼為:

1111 1111 1111 1111 1111 1111 1111 1010 + 1 =

1111 1111 1111 1111 1111 1111 1111 1011

所以,-5 在計(jì)算機(jī)中的二進(jìn)制表達(dá)為:

1111 1111 1111 1111 1111 1111 1111 1011

轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎么求 ~i 了

int型儲(chǔ)存32個(gè)二進(jìn)制位,~這個(gè)符號(hào)是按位取反,就是求i的反碼。

即得到1111 1111 1111 1111 1111 1111 1111 1010

上面這串二進(jìn)制代表一個(gè)負(fù)數(shù),將它轉(zhuǎn)換成int型過程如下:

1111 1111 1111 1111 1111 1111 1111 1010-1 =

1111 1111 1111 1111 1111 1111 1111 1001

再求反:

0000 0000 0000 0000 0000 0000 0000 0110

這個(gè)值就是5的按位取反所得到的int整數(shù)的絕對(duì)值(注意:5按位取反得到的是負(fù)數(shù))

所以轉(zhuǎn)換為int型為:6

即:int型的i=5 取反后的結(jié)果為-6

java中按位取反運(yùn)算的詳解

按位取反就是每一位都取反,所謂取反就是1變0,0變1

比如樓主說的10

二進(jìn)制表示就是00000000

00000000

00000000

00001010

取反后就是11111111

11111111

11111111

11110101

這在十進(jìn)制中就是-11

而他的二進(jìn)制原碼表示就是-1011

關(guān)于JAVA 中取反問題

在2進(jìn)制中,負(fù)數(shù)是以它正值的補(bǔ)碼形式表達(dá)

原碼:一個(gè)整數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),稱為原碼。

比如 0000 0000 0000 0000 0000 0000 0000 0101是 5的 原碼。

反碼:將二進(jìn)制數(shù)按位取反,所得的新二進(jìn)制數(shù)稱為原二進(jìn)制數(shù)的反碼。

取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

比如:將5的二進(jìn)制表達(dá)式的每一位取反,得

1111 1111 1111 1111 1111 1111 1111 1010

稱:1111 1111 1111 1111 1111 1111 1111 1010 是 0000 0000 0000 0000 0000 0000 0000 0101 的反碼。

反碼是相互的,所以也可稱:

1111 1111 1111 1111 1111 1111 1111 1010 和 0000 0000 0000 0000 0000 0000 0000 0101 互為反碼。

補(bǔ)碼:反碼加1稱為補(bǔ)碼。

也就是說,要得到一個(gè)數(shù)的補(bǔ)碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補(bǔ)碼。

那么,5的補(bǔ)碼為:

1111 1111 1111 1111 1111 1111 1111 1010 + 1 =

1111 1111 1111 1111 1111 1111 1111 1011

所以,-5 在計(jì)算機(jī)中的二進(jìn)制表達(dá)為:

1111 1111 1111 1111 1111 1111 1111 1011

轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎么求 ~i 了

int型儲(chǔ)存32個(gè)二進(jìn)制位,~這個(gè)符號(hào)是按位取反,就是求i的反碼。

即得到1111 1111 1111 1111 1111 1111 1111 1010

上面這串二進(jìn)制代表一個(gè)負(fù)數(shù),將它轉(zhuǎn)換成int型過程如下:

1111 1111 1111 1111 1111 1111 1111 1010-1 =

1111 1111 1111 1111 1111 1111 1111 1001

再求反:

0000 0000 0000 0000 0000 0000 0000 0110

這個(gè)值就是5的按位取反所得到的int整數(shù)的絕對(duì)值(注意:5按位取反得到的是負(fù)數(shù))

所以轉(zhuǎn)換為int型為:6

即:int型的i=5 取反后的結(jié)果為-6

java編程 按位取反的問題

這個(gè)問題涉及到計(jì)算機(jī)內(nèi)部的編碼。

對(duì)于整數(shù),計(jì)算機(jī)內(nèi)部用最高位表示符號(hào)位,0表示為正,1表示為負(fù)。

對(duì)于負(fù)數(shù),為了便于計(jì)算,計(jì)算機(jī)用補(bǔ)碼來表示其值。

已經(jīng)一個(gè)數(shù)的補(bǔ)碼,要知道其值分兩種情況:

1:符號(hào)位是0,正數(shù),所以后面的二進(jìn)制位則表示大小,即正數(shù)的原碼=其補(bǔ)碼。如1表示出來則為00000001(我這里用八位來表示,也可以用16位或32位)

2:符號(hào)位是1,負(fù)數(shù),這時(shí)候需要把后面的數(shù)取反再加一(要問為什么?查一下資料吧,可以根據(jù)補(bǔ)碼的特性推出來),所以11111110表示的數(shù)是1111110取反為0000001,再加1,則為0000002。算上符號(hào)位,就是-2。

以你的例子來說,

a=0=0000?0000?0000?0000?0000?0000?0000?0000

~a?=?1111?1111?1111?1111?1111?1111?1111?1111

符號(hào)位是1,后面的數(shù)取反再+1

1000?0000?0000?0000?0000?0000?0000?0001?=?-1


文章題目:java后兩位取反代碼 Java 取反
文章鏈接:http://weahome.cn/article/hgposp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部