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

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

java二進(jìn)制取反代碼 二進(jìn)制怎么取反碼

Java基礎(chǔ),正數(shù)取反,各二進(jìn)制碼按補(bǔ)碼各位取反;反碼取反,各二進(jìn)制碼按補(bǔ)碼各位取反。

亂七八糟。按專業(yè)角度說,為了解決把二進(jìn)制整數(shù)減法(或負(fù)數(shù)運(yùn)算)轉(zhuǎn)換成加法來算的問題(所以你只聽過累加器,而沒有累減器),就發(fā)明了原碼,反碼,補(bǔ)碼。比如一個(gè)-2,假設(shè)它是八位長度的,原碼就是10000010,最高位1表示這是一個(gè)負(fù)數(shù)。反碼是11111101,就是除符號位以外把原碼各位都取反。補(bǔ)碼就是反碼加1,即11111110。正數(shù)2的補(bǔ)碼規(guī)定為自身,即00000010?,F(xiàn)在把兩個(gè)數(shù)的補(bǔ)碼相加,11111110+00000010=100000000。前面我們已假設(shè)是在八位字長的環(huán)境下運(yùn)算,現(xiàn)在算出了九位,這樣就溢出了,即在八位環(huán)境下看,第九位的1是不存在的,結(jié)果是00000000,即0。這和我們算2-2的結(jié)果是一樣的,這就實(shí)現(xiàn)了把減法轉(zhuǎn)為加法。另外,java還規(guī)定了幾個(gè)運(yùn)算,把二進(jìn)制數(shù)作與,或,非,異或,移位等運(yùn)算,這些都與上面說的三種碼沒有直接關(guān)系,不要弄混了

成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)建站擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

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

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

比如樓主說的10

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

00000000

00000000

00001010

取反后就是11111111

11111111

11111111

11110101

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

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

Java 取反運(yùn)算符

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

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);

具體理論知識如下所示:

先要理解一些概念:

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

原碼:一個(gè)整數(shù),按照絕對值大小轉(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型儲存32個(gè)二進(jìn)制位,~這個(gè)符號是按位取反,就是求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ù)的絕對值(注意:5按位取反得到的是負(fù)數(shù))

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

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

跪求“java中二進(jìn)制怎么表示”

java中二進(jìn)制的表示:

1、Java中定義兩個(gè)數(shù),然后分別打印出它們的二進(jìn)制表示(例如7和-7):

System.out.println("Java二進(jìn)制7:?"+Integer.toBinaryString(7));

System.out.println("Java二進(jìn)制-7:?"+Integer.toBinaryString(-7));

輸出:

Java二進(jìn)制7: 111

Java二進(jìn)制-7: 11111111111111111111111111111001

7的二進(jìn)制就是111

-7轉(zhuǎn)化二進(jìn)制的過程:

(1)把-7轉(zhuǎn)化成7,二進(jìn)制是 111

(2)Java中對于不滿32位的int二進(jìn)制自動補(bǔ)齊,所以變成了 (29個(gè)0)111

(3)然后取反 ?(29個(gè)1)000

(4)然后加1 (29個(gè)1)001

擴(kuò)展資料:

c語言中二進(jìn)制的轉(zhuǎn)換:

用函數(shù)轉(zhuǎn)換itoa(值,數(shù)組名,進(jìn)制)

#includestdio.h

#includestdlib.h

void?main()

{

char str[8];

int?i=8;

itoa(i,str,2);

printf("%s",str);

}

參考資料:

java二進(jìn)制——百度百科

java中二進(jìn)制-11的源碼和反碼是多少

正數(shù)的反碼是其本身

負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上, 符號位不變,其余各個(gè)位取反

以8位為例

11 原碼為 0000 1011

-11 原碼為 1000 1011

-11 反碼為 1111 0100


當(dāng)前文章:java二進(jìn)制取反代碼 二進(jìn)制怎么取反碼
轉(zhuǎn)載來源:http://weahome.cn/article/hhpojd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部