摘要:位運(yùn)算符位運(yùn)算符與邏輯運(yùn)算符類似,但是位運(yùn)算符是對(duì)每一位進(jìn)行計(jì)算。上面說到的按位取反加,就可以寫成移位運(yùn)算符右移與無符號(hào)右移相似,是將整數(shù)所有的位向右移動(dòng)位,拋棄個(gè)低位??粘鰜淼牡臀挥玫淖罡呶恢笛a(bǔ)全。
定點(diǎn)數(shù)據(jù)再計(jì)算機(jī)中的表示方法
例如一個(gè)整數(shù)類型(int)的數(shù)據(jù)在內(nèi)存中占用了32位。通俗的講就是在內(nèi)存中挖了32個(gè)坑,每一個(gè)坑里可以放一個(gè)0或者1.
00000000 11111111 00000000 11111111
32個(gè)坑,每一個(gè)坑有兩種可能,那么總共就是2^32種可能。
整數(shù)既有正整數(shù),又有負(fù)整數(shù),還有一個(gè)零,那么分2^32分一半的可能(2^31)給負(fù)整數(shù),分一種可能給0,還剩下2^31-1種可能給整整數(shù)。
這就是為啥整數(shù)類型(int)只能表示-2^31~2^31-1數(shù)值范圍的整數(shù)了。
我們知道整數(shù)類型(int)中,正整數(shù)就可以標(biāo)示成:
00000000 00000000 00000000 00000000 =>表示整數(shù)0; 00000000 00000000 00000000 00000001 =>表示整數(shù)1; 00000000 00000000 00000000 00000010 =>表示整數(shù)2; .... 00000000 00000000 11111111 11111111 =>表示整數(shù)2^31-1
那么負(fù)整數(shù)就可以標(biāo)示成:
11111111 11111111 11111111 11111111 =>標(biāo)示整數(shù)-1; 11111111 11111111 11111111 11111110 =>表示整數(shù)-2; 11111111 11111111 11111111 11111101 =>表示整數(shù)-3; ... 11111111 11111111 00000000 00000001 =>表示整數(shù)-2^31-1 11111111 11111111 00000000 00000000 =>表示整數(shù)-2^31
看到這里,像我一樣聰明的小伙伴肯定可以看出正整數(shù)和其對(duì)應(yīng)的負(fù)整數(shù)之間的關(guān)系:媽蛋,它們就是把正整數(shù)所有的0變成1,把1變成0,然后在加上1.
把正整數(shù)所有的0變成1,把1變成0,然后在加上1這是通俗的叫法,其實(shí)術(shù)語叫按位取反。
位運(yùn)算符與邏輯運(yùn)算符類似,但是位運(yùn)算符是對(duì)每一位進(jìn)行計(jì)算。
op1[i] | op2[i] | op1[i]&op2[i] | op1[i] | op2[i] | op1[i]^op2[i] | ~op1[i] |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 0 |
上面說到的按位取反加1,就可以寫成:
System.out.print(~10+1); //-10移位運(yùn)算符 >>, >>>, <<
右移>>與無符號(hào)右移>>>相似,
op1>>op2 是將整數(shù)op1所有的位向右移動(dòng)op2位,拋棄op2個(gè)低位??粘鰜淼母呶挥胦p1的最高位值補(bǔ)全。
op1>>>op2 是將整數(shù)op1所有的位向右移動(dòng)op2位,拋棄op2個(gè)低位。空出來的高位用0的最高位值補(bǔ)全。
op1< 沒有<<<哦,親~~~ 我們來取a和b的第i位剖析一下,a,b 總共四種可能: 可以發(fā)現(xiàn)(a^b)^a與a的值是一樣的。 就能實(shí)現(xiàn)a、b交換數(shù)值。(a^b)^a = b
a[i]
b[i]
a^b[i]
a^b[i]
0
0
0
0
0
1
1
1
1
0
1
0
1
1
0
1
所以如果我們這么寫的話:a = a^b;
b = a^b; //b = (a^b)^b = a
a = a^b; // a = (a^b)^a = b
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66374.html
摘要:局部變量聲明在函數(shù)內(nèi)部的變量。在作用域范圍內(nèi)不能出現(xiàn)命名沖突。 java編程規(guī)范: 1.良好的標(biāo)識(shí)符的命名 保留字不能作為標(biāo)識(shí)符命名: class、public、static..., goto,const 區(qū)分大小寫:helloWorld、HelloWorld 2.良好的注釋習(xí)慣 3.良好的縮進(jìn):沒遇到一個(gè)代碼塊縮進(jìn)一次(一個(gè)tab鍵) 變量:代...
摘要:中的運(yùn)算符按功能劃分主要分類。算術(shù)運(yùn)算符的優(yōu)先級(jí)浮點(diǎn)數(shù)比較在中,一般不建議直接比較兩個(gè)浮點(diǎn)數(shù)是否相等。還有與二元運(yùn)算符相結(jié)合的賦值運(yùn)算符。與二元運(yùn)算符相結(jié)合的賦值運(yùn)算符有其運(yùn)算即為先兩者進(jìn)行二元操作再賦值給前者。 java中的運(yùn)算符按功能劃分主要分7類。 算術(shù)運(yùn)算符 +, -, *, /, ++, --, % 關(guān)系運(yùn)算符 =, ==, != 布爾邏輯運(yùn)算符 &&, &, |...
摘要:結(jié)構(gòu)體也可以包含結(jié)構(gòu)體,就像內(nèi)部類訪問結(jié)構(gòu)的屬性和一樣。。我覺得這個(gè)需要學(xué)下數(shù)據(jù)結(jié)構(gòu)才能更好理解給數(shù)據(jù)類型起一個(gè)新名字則可以通過對(duì)于結(jié)構(gòu)體我可以這樣再通過變量名就可以簡(jiǎn)便的聲明結(jié)構(gòu)體變量。文件暫時(shí)過了一遍預(yù)處理器頭文件就是擴(kuò)展名為的文件。 ...
摘要:對(duì)象數(shù)組都是引用數(shù)據(jù)類型。低高數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則不能對(duì)類型進(jìn)行類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的。聲明變量的基本格式如下格式說明為數(shù)據(jù)類型。但為了對(duì)類的使用者可見,大多數(shù)靜態(tài)變量聲明為類型。 變量就是申請(qǐng)內(nèi)存來存儲(chǔ)值。也就是說,當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請(qǐng)空間。 內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲(chǔ)空間,分配的空間只能用來儲(chǔ)存該類型數(shù)據(jù)。 因此,...
摘要:變量聲明變量變量名規(guī)則字母開頭,由字母或數(shù)字構(gòu)成的序列,中的字母包括或者某種語言中代表字母的任何字符,數(shù)字包括或者某種語言中代表數(shù)字的任何字符。刪除原始字符串頭部和尾部空格。中斷控制流程,使用在和循環(huán)中,用于提前中斷循環(huán)。 《Java核心技術(shù) 卷Ⅰ》 第3章 Java 的基本程序設(shè)計(jì)結(jié)構(gòu) 一些規(guī)則 類命名:CamelCase 駝峰命名法,以及必須是字母開頭,后面跟字母和數(shù)字的任意組合...
閱讀 883·2021-11-22 12:04
閱讀 2087·2021-11-02 14:46
閱讀 614·2021-08-30 09:44
閱讀 2098·2019-08-30 15:54
閱讀 714·2019-08-29 13:48
閱讀 1586·2019-08-29 12:56
閱讀 3440·2019-08-28 17:51
閱讀 3279·2019-08-26 13:44