免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Java 位運(yùn)算符
Java 定義的位運(yùn)算(bitwise operators )直接對(duì)整數(shù)類(lèi)型的位進(jìn)行操作,這些整數(shù)類(lèi)型包括long,int,short,char,and byte 。表4-2 列出了位運(yùn)算: 
表4.2 位運(yùn)算符及其結(jié)果

運(yùn)算符 結(jié)果 
~ 按位非(NOT)(一元運(yùn)算) 
& 按位與(AND) 
| 按位或(OR) 
^ 按位異或(XOR) 
>> 右移 
>>> 右移,左邊空出的位以0填充 
運(yùn)算符 結(jié)果 
<< 左移 
&= 按位與賦值 
|= 按位或賦值 
^= 按位異或賦值 
>>= 右移賦值 
>>>= 右移賦值,左邊空出的位以0填充 
<<= 左移賦值 

續(xù)表

既然位運(yùn)算符在整數(shù)范圍內(nèi)對(duì)位操作,因此理解這樣的操作會(huì)對(duì)一個(gè)值產(chǎn)生什么效果是重要的。具體地說(shuō),知道Java 是如何存儲(chǔ)整數(shù)值并且如何表示負(fù)數(shù)的是有用的。因此,在繼續(xù)討論之前,讓我們簡(jiǎn)短概述一下這兩個(gè)話(huà)題。

所有的整數(shù)類(lèi)型以二進(jìn)制數(shù)字位的變化及其寬度來(lái)表示。例如,byte 型值42的二進(jìn)制代碼是00101010 ,其中每個(gè)位置在此代表2的次方,在最右邊的位以20開(kāi)始。向左下一個(gè)位置將是21,或2,依次向左是22,或4,然后是8,16,32等等,依此類(lèi)推。因此42在其位置1,3,5的值為1(從右邊以0開(kāi)始數(shù));這樣42是21+23+25的和,也即是2+8+32 。

所有的整數(shù)類(lèi)型(除了char 類(lèi)型之外)都是有符號(hào)的整數(shù)。這意味著他們既能表示正數(shù),又能表示負(fù)數(shù)。Java 使用大家知道的2的補(bǔ)碼(two’s complement )這種編碼來(lái)表示負(fù)數(shù),也就是通過(guò)將與其對(duì)應(yīng)的正數(shù)的二進(jìn)制代碼取反(即將1變成0,將0變成1),然后對(duì)其結(jié)果加1。例如,-42就是通過(guò)將42的二進(jìn)制代碼的各個(gè)位取反,即對(duì)00101010 取反得到11010101 ,然后再加1,得到11010110 ,即-42 。要對(duì)一個(gè)負(fù)數(shù)解碼,首先對(duì)其所有的位取反,然后加1。例如-42,或11010110 取反后為00101001 ,或41,然后加1,這樣就得到了42。

如果考慮到零的交叉(zero crossing )問(wèn)題,你就容易理解Java (以及其他絕大多數(shù)語(yǔ)言)這樣用2的補(bǔ)碼的原因。假定byte 類(lèi)型的值零用00000000 代表。它的補(bǔ)碼是僅僅將它的每一位取反,即生成11111111 ,它代表負(fù)零。但問(wèn)題是負(fù)零在整數(shù)數(shù)學(xué)中是無(wú)效的。為了解決負(fù)零的問(wèn)題,在使用2的補(bǔ)碼代表負(fù)數(shù)的值時(shí),對(duì)其值加1。即負(fù)零11111111 加1后為100000000 。但這樣使1位太靠左而不適合返回到byte 類(lèi)型的值,因此人們規(guī)定,-0和0的表示方法一樣,-1的解碼為11111111 。盡管我們?cè)谶@個(gè)例子使用了byte 類(lèi)型的值,但同樣的基本的原則也適用于所有Java 的整數(shù)類(lèi)型。

因?yàn)镴ava 使用2的補(bǔ)碼來(lái)存儲(chǔ)負(fù)數(shù),并且因?yàn)镴ava 中的所有整數(shù)都是有符號(hào)的,這樣應(yīng)用位運(yùn)算符可以容易地達(dá)到意想不到的結(jié)果。例如,不管你如何打算,Java 用高位來(lái)代表負(fù)數(shù)。為避免這個(gè)討厭的意外,請(qǐng)記住不管高位的順序如何,它決定一個(gè)整數(shù)的符號(hào)。

4.2.1 位邏輯運(yùn)算符
位邏輯運(yùn)算符有“與”(AND)、“或”(OR)、“異或(XOR )”、“非(NOT)”,分別用“&”、“|”、“^”、“~”表示,4-3 表顯示了每個(gè)位邏輯運(yùn)算的結(jié)果。在繼續(xù)討論之前,請(qǐng)記住位運(yùn)算符應(yīng)用于每個(gè)運(yùn)算數(shù)內(nèi)的每個(gè)單獨(dú)的位。
表4-3 位邏輯運(yùn)算符的結(jié)果 
A 0 1 0 1 B 0 0 1 1 A | B 0 1 1 1 A & B 0 0 0 1 A ^ B 0 1 1 0 ~A 1 0 1 0 

按位非(NOT)

按位非也叫做補(bǔ),一元運(yùn)算符NOT“~”是對(duì)其運(yùn)算數(shù)的每一位取反。例如,數(shù)字42,它的二進(jìn)制代碼為:

00101010 

經(jīng)過(guò)按位非運(yùn)算成為

11010101 

按位與(AND)

按位與運(yùn)算符“&”,如果兩個(gè)運(yùn)算數(shù)都是1,則結(jié)果為1。其他情況下,結(jié)果均為零。看下面的例子:

00101010 42 &00001111 15 

00001010 10 

按位或(OR)

按位或運(yùn)算符“|”,任何一個(gè)運(yùn)算數(shù)為1,則結(jié)果為1。如下面的例子所示:

00101010 42 | 00001111 15 

00101111 47 

按位異或(XOR)

按位異或運(yùn)算符“^”,只有在兩個(gè)比較的位不同時(shí)其結(jié)果是 1。否則,結(jié)果是零。下面的例子顯示了“^”運(yùn)算符的效果。這個(gè)例子也表明了XOR 運(yùn)算符的一個(gè)有用的屬性。注意第二個(gè)運(yùn)算數(shù)有數(shù)字1的位,42對(duì)應(yīng)二進(jìn)制代碼的對(duì)應(yīng)位是如何被轉(zhuǎn)換的。第二個(gè)運(yùn)算數(shù)有數(shù)字0的位,第一個(gè)運(yùn)算數(shù)對(duì)應(yīng)位的數(shù)字不變。當(dāng)對(duì)某些類(lèi)型進(jìn)行位運(yùn)算時(shí),你將會(huì)看到這個(gè)屬性的用處。

00101010 42 ^ 00001111 15 

00100101 37
位邏輯運(yùn)算符的應(yīng)用

下面的例子說(shuō)明了位邏輯運(yùn)算符:

// Demonstrate the bitwise logical operators.
class BitLogic {
public static void main(String args[]) {


String binary[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" 

};
int a = 3; // 0 + 2 + 1 or 0011 in binary
int b = 6; // 4 + 2 + 0 or 0110 in binary
int c = a | b;
int d = a & b; 
int e = a ^ b; 
int f = (~a & b) | (a & ~b);
int g = ~a & 0x0f; 


System.out.println(" a = " + binary[a]);
System.out.println(" b = " + binary[b]);
System.out.println(" a|b = " + binary[c]);
System.out.println(" a&b = " + binary[d]);
System.out.println(" a^b = " + binary[e]);
System.out.println("~a&b|a&~b = " + binary[f]);
System.out.println(" ~a = " + binary[g]);


}
}


在本例中,變量a與b對(duì)應(yīng)位的組合代表了二進(jìn)制數(shù)所有的 4 種組合模式:0-0,0-1,1-0 ,和1-1 。“|”運(yùn)算符和“&”運(yùn)算符分別對(duì)變量a與b各個(gè)對(duì)應(yīng)位的運(yùn)算得到了變量c和變量d的值。對(duì)變量e和f的賦值說(shuō)明了“^”運(yùn)算符的功能。字符串?dāng)?shù)組binary 代表了0到15 對(duì)應(yīng)的二進(jìn)制的值。在本例中,數(shù)組各元素的排列順序顯示了變量對(duì)應(yīng)值的二進(jìn)制代碼。數(shù)組之所以這樣構(gòu)造是因?yàn)樽兞康闹祅對(duì)應(yīng)的二進(jìn)制代碼可以被正確的存儲(chǔ)在數(shù)組對(duì)應(yīng)元素binary[n] 中。例如變量a的值為3,則它的二進(jìn)制代碼對(duì)應(yīng)地存儲(chǔ)在數(shù)組元素binary[3] 中。~a的值與數(shù)字0x0f (對(duì)應(yīng)二進(jìn)制為0000 1111 )進(jìn)行按位與運(yùn)算的目的是減小~a的值,保證變量g的結(jié)果小于16。因此該程序的運(yùn)行結(jié)果可以用數(shù)組binary 對(duì)應(yīng)的元素來(lái)表示。該程序的輸出如下:

a = 0011 b = 0110 a|b = 0111 a&b = 0010 a^b = 0101 ~a&b|a&~b = 0101 ~a = 1100 

4.2.2 左移運(yùn)算符
左移運(yùn)算符<<使指定值的所有位都左移規(guī)定的次數(shù)。它的通用格式如下所示:

value << num
這里,num 指定要移位值value 移動(dòng)的位數(shù)。也就是,左移運(yùn)算符<<使指定值的所有位都左移num位。每左移一個(gè)位,高階位都被移出(并且丟棄),并用0填充右邊。這意味著當(dāng)左移的運(yùn)算數(shù)是int 類(lèi)型時(shí),每移動(dòng)1位它的第31位就要被移出并且丟棄;當(dāng)左移的運(yùn)算數(shù)是long 類(lèi)型時(shí),每移動(dòng)1位它的第63位就要被移出并且丟棄。

在對(duì)byte 和short類(lèi)型的值進(jìn)行移位運(yùn)算時(shí),你必須小心。因?yàn)槟阒繨ava 在對(duì)表達(dá)式求值時(shí),將自動(dòng)把這些類(lèi)型擴(kuò)大為 int 型,而且,表達(dá)式的值也是int 型。對(duì)byte 和short類(lèi)型的值進(jìn)行移位運(yùn)算的結(jié)果是int 型,而且如果左移不超過(guò)31位,原來(lái)對(duì)應(yīng)各位的值也不會(huì)丟棄。但是,如果你對(duì)一個(gè)負(fù)的byte 或者short類(lèi)型的值進(jìn)行移位運(yùn)算,它被擴(kuò)大為int 型后,它的符號(hào)也被擴(kuò)展。這樣,整數(shù)值結(jié)果的高位就會(huì)被1填充。因此,為了得到正確的結(jié)果,你就要舍棄得到結(jié)果的高位。這樣做的最簡(jiǎn)單辦法是將結(jié)果轉(zhuǎn)換為byte 型。下面的程序說(shuō)明了這一點(diǎn):

// Left shifting a byte value.
class ByteShift {


public static void main(String args[]) {
byte a = 64, b;
int i; 


i = a << 2;
b = (byte) (a << 2); 


System.out.println("Original value of a: " + a);
System.out.println("i and b: " + i + " " + b);
}
}


該程序產(chǎn)生的輸出下所示:

Original value of a: 64
i and b: 256 0 


因變量a在賦值表達(dá)式中,故被擴(kuò)大為int 型,64(0100 0000 )被左移兩次生成值256 (10000 0000 )被賦給變量i。然而,經(jīng)過(guò)左移后,變量b中惟一的1被移出,低位全部成了0,因此b的值也變成了0。

既然每次左移都可以使原來(lái)的操作數(shù)翻倍,程序員們經(jīng)常使用這個(gè)辦法來(lái)進(jìn)行快速的2 的乘法。但是你要小心,如果你將1移進(jìn)高階位(31或63位),那么該值將變?yōu)樨?fù)值。下面的程序說(shuō)明了這一點(diǎn):

// Left shifting as a quick way to multiply by 2.
class MultByTwo {


public static void main(String args[]) {
int i;
int num = 0xFFFFFFE; 


for(i=0; i<4; i++) {
num = num << 1; 
System.out.println(num);


}
}
這里,num 指定要移位值value 移動(dòng)的位數(shù)。也就是,左移運(yùn)算符<<使指定值的所有位都左移num位。每左移一個(gè)位,高階位都被移出(并且丟棄),并用0填充右邊。這意味著當(dāng)左移的運(yùn)算數(shù)是int 類(lèi)型時(shí),每移動(dòng)1位它的第31位就要被移出并且丟棄;當(dāng)左移的運(yùn)算數(shù)是long 類(lèi)型時(shí),每移動(dòng)1位它的第63位就要被移出并且丟棄。

在對(duì)byte 和short類(lèi)型的值進(jìn)行移位運(yùn)算時(shí),你必須小心。因?yàn)槟阒繨ava 在對(duì)表達(dá)式求值時(shí),將自動(dòng)把這些類(lèi)型擴(kuò)大為 int 型,而且,表達(dá)式的值也是int 型。對(duì)byte 和short類(lèi)型的值進(jìn)行移位運(yùn)算的結(jié)果是int 型,而且如果左移不超過(guò)31位,原來(lái)對(duì)應(yīng)各位的值也不會(huì)丟棄。但是,如果你對(duì)一個(gè)負(fù)的byte 或者short類(lèi)型的值進(jìn)行移位運(yùn)算,它被擴(kuò)大為int 型后,它的符號(hào)也被擴(kuò)展。這樣,整數(shù)值結(jié)果的高位就會(huì)被1填充。因此,為了得到正確的結(jié)果,你就要舍棄得到結(jié)果的高位。這樣做的最簡(jiǎn)單辦法是將結(jié)果轉(zhuǎn)換為byte 型。下面的程序說(shuō)明了這一點(diǎn):

// Left shifting a byte value.
class ByteShift {


public static void main(String args[]) {
byte a = 64, b;
int i; 


i = a << 2;
b = (byte) (a << 2); 


System.out.println("Original value of a: " + a);
System.out.println("i and b: " + i + " " + b);
}
}


該程序產(chǎn)生的輸出下所示:

Original value of a: 64
i and b: 256 0 


因變量a在賦值表達(dá)式中,故被擴(kuò)大為int 型,64(0100 0000 )被左移兩次生成值256 (10000 0000 )被賦給變量i。然而,經(jīng)過(guò)左移后,變量b中惟一的1被移出,低位全部成了0,因此b的值也變成了0。

既然每次左移都可以使原來(lái)的操作數(shù)翻倍,程序員們經(jīng)常使用這個(gè)辦法來(lái)進(jìn)行快速的2 的乘法。但是你要小心,如果你將1移進(jìn)高階位(31或63位),那么該值將變?yōu)樨?fù)值。下面的程序說(shuō)明了這一點(diǎn):

// Left shifting as a quick way to multiply by 2.
class MultByTwo {


public static void main(String args[]) {
int i;
int num = 0xFFFFFFE; 


for(i=0; i<4; i++) {
num = num << 1; 
System.out.println(num);


}
}


該程序的輸出如下所示:

536870908 
1073741816 
2147483632 
-32 


初值經(jīng)過(guò)仔細(xì)選擇,以便在左移 4 位后,它會(huì)產(chǎn)生-32。正如你看到的,當(dāng)1被移進(jìn)31 位時(shí),數(shù)字被解釋為負(fù)值。

4.2.3 右移運(yùn)算符
右移運(yùn)算符>>使指定值的所有位都右移規(guī)定的次數(shù)。它的通用格式如下所示:

value >> num 

這里,num 指定要移位值value 移動(dòng)的位數(shù)。也就是,右移運(yùn)算符>>使指定值的所有位都右移num位。下面的程序片段將值32右移2次,將結(jié)果8賦給變量a: 

int a = 32;
a = a >> 2; // a now contains 8 


當(dāng)值中的某些位被“移出”時(shí),這些位的值將丟棄。例如,下面的程序片段將35右移2 次,它的2個(gè)低位被移出丟棄,也將結(jié)果8賦給變量a: 

int a = 35; 
a = a >> 2; // a still contains 8 


用二進(jìn)制表示該過(guò)程可以更清楚地看到程序的運(yùn)行過(guò)程:

00100011 35 
>> 2 
00001000 8 


將值每右移一次,就相當(dāng)于將該值除以2并且舍棄了余數(shù)。你可以利用這個(gè)特點(diǎn)將一個(gè)整數(shù)進(jìn)行快速的2的除法。當(dāng)然,你一定要確保你不會(huì)將該數(shù)原有的任何一位移出。

右移時(shí),被移走的最高位(最左邊的位)由原來(lái)最高位的數(shù)字補(bǔ)充。例如,如果要移走的值為負(fù)數(shù),每一次右移都在左邊補(bǔ)1,如果要移走的值為正數(shù),每一次右移都在左邊補(bǔ)0,這叫做符號(hào)位擴(kuò)展(保留符號(hào)位)(sign extension ),在進(jìn)行右移操作時(shí)用來(lái)保持負(fù)數(shù)的符號(hào)。例如,–8 >> 1 是–4,用二進(jìn)制表示如下:

11111000 –8 >>1 11111100 –4 

一個(gè)要注意的有趣問(wèn)題是,由于符號(hào)位擴(kuò)展(保留符號(hào)位)每次都會(huì)在高位補(bǔ)1,因此-1右移的結(jié)果總是–1。有時(shí)你不希望在右移時(shí)保留符號(hào)。例如,下面的例子將一個(gè)byte 型的值轉(zhuǎn)換為用十六
進(jìn)制表示。注意右移后的值與0x0f進(jìn)行按位與運(yùn)算,這樣可以舍棄任何的符號(hào)位擴(kuò)展,以便得到的值可以作為定義數(shù)組的下標(biāo),從而得到對(duì)應(yīng)數(shù)組元素代表的十六進(jìn)制字符。

// Masking sign extension.
class HexByte {
static public void main(String args[]) {


char hex[] = {
’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, 
’8’, ’9’, ’a’, ’b’, ’c’, ’d’, ’e’, ’f’’ 


};
byte b = (byte) 0xf1; 


System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);}} 

該程序的輸出如下:

b = 0xf1 

4.2.4 無(wú)符號(hào)右移
正如上面剛剛看到的,每一次右移,>>運(yùn)算符總是自動(dòng)地用它的先前最高位的內(nèi)容補(bǔ)它的最高位。這樣做保留了原值的符號(hào)。但有時(shí)這并不是我們想要的。例如,如果你進(jìn)行移位操作的運(yùn)算數(shù)不是數(shù)字值,你就不希望進(jìn)行符號(hào)位擴(kuò)展(保留符號(hào)位)。當(dāng)你處理像素值或圖形時(shí),這種情況是相當(dāng)普遍的。在這種情況下,不管運(yùn)算數(shù)的初值是什么,你希望移位后總是在高位(最左邊)補(bǔ)0。這就是人們所說(shuō)的無(wú)符號(hào)移動(dòng)(unsigned shift )。這時(shí)你可以使用Java 的無(wú)符號(hào)右移運(yùn)算符>>> ,它總是在左邊補(bǔ)0。

下面的程序段說(shuō)明了無(wú)符號(hào)右移運(yùn)算符>>> 。在本例中,變量a被賦值為-1,用二進(jìn)制表示就是32位全是1。這個(gè)值然后被無(wú)符號(hào)右移24位,當(dāng)然它忽略了符號(hào)位擴(kuò)展,在它的左邊總是補(bǔ)0。這樣得到的值255被賦給變量a。

int a = -1; a = a >>> 24; 

下面用二進(jìn)制形式進(jìn)一步說(shuō)明該操作:

11111111 11111111 11111111 11111111 int型-1的二進(jìn)制代碼>>> 24 無(wú)符號(hào)右移24位00000000 00000000 00000000 11111111 int型255的二進(jìn)制代碼

由于無(wú)符號(hào)右移運(yùn)算符>>> 只是對(duì)32位和64位的值有意義,所以它并不像你想象的那樣有用。因?yàn)槟阋涀。诒磉_(dá)式中過(guò)小的值總是被自動(dòng)擴(kuò)大為int 型。這意味著符號(hào)位擴(kuò)展和移動(dòng)總是發(fā)生在32位而不是8位或16位。這樣,對(duì)第7位以0開(kāi)始的byte 型的值進(jìn)行無(wú)符號(hào)移動(dòng)是不可能的,因?yàn)樵趯?shí)際移動(dòng)運(yùn)算時(shí),是對(duì)擴(kuò)大后的32位值進(jìn)行操作。下面的例子說(shuō)明了這一點(diǎn):

// Unsigned shifting a byte value.
class ByteUShift {
static public void main(String args[]) {
進(jìn)制表示。注意右移后的值與0x0f進(jìn)行按位與運(yùn)算,這樣可以舍棄任何的符號(hào)位擴(kuò)展,以便得到的值可以作為定義數(shù)組的下標(biāo),從而得到對(duì)應(yīng)數(shù)組元素代表的十六進(jìn)制字符。

// Masking sign extension.
class HexByte {
static public void main(String args[]) {


char hex[] = {
’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, 
’8’, ’9’, ’a’, ’b’, ’c’, ’d’, ’e’, ’f’’ 


};
byte b = (byte) 0xf1; 


System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);}} 

該程序的輸出如下:

b = 0xf1 

4.2.4 無(wú)符號(hào)右移
正如上面剛剛看到的,每一次右移,>>運(yùn)算符總是自動(dòng)地用它的先前最高位的內(nèi)容補(bǔ)它的最高位。這樣做保留了原值的符號(hào)。但有時(shí)這并不是我們想要的。例如,如果你進(jìn)行移位操作的運(yùn)算數(shù)不是數(shù)字值,你就不希望進(jìn)行符號(hào)位擴(kuò)展(保留符號(hào)位)。當(dāng)你處理像素值或圖形時(shí),這種情況是相當(dāng)普遍的。在這種情況下,不管運(yùn)算數(shù)的初值是什么,你希望移位后總是在高位(最左邊)補(bǔ)0。這就是人們所說(shuō)的無(wú)符號(hào)移動(dòng)(unsigned shift )。這時(shí)你可以使用Java 的無(wú)符號(hào)右移運(yùn)算符>>> ,它總是在左邊補(bǔ)0。

下面的程序段說(shuō)明了無(wú)符號(hào)右移運(yùn)算符>>> 。在本例中,變量a被賦值為-1,用二進(jìn)制表示就是32位全是1。這個(gè)值然后被無(wú)符號(hào)右移24位,當(dāng)然它忽略了符號(hào)位擴(kuò)展,在它的左邊總是補(bǔ)0。這樣得到的值255被賦給變量a。

int a = -1; a = a >>> 24; 

下面用二進(jìn)制形式進(jìn)一步說(shuō)明該操作:

11111111 11111111 11111111 11111111 int型-1的二進(jìn)制代碼>>> 24 無(wú)符號(hào)右移24位00000000 00000000 00000000 11111111 int型255的二進(jìn)制代碼

由于無(wú)符號(hào)右移運(yùn)算符>>> 只是對(duì)32位和64位的值有意義,所以它并不像你想象的那樣有用。因?yàn)槟阋涀?,在表達(dá)式中過(guò)小的值總是被自動(dòng)擴(kuò)大為int 型。這意味著符號(hào)位擴(kuò)展和移動(dòng)總是發(fā)生在32位而不是8位或16位。這樣,對(duì)第7位以0開(kāi)始的byte 型的值進(jìn)行無(wú)符號(hào)移動(dòng)是不可能的,因?yàn)樵趯?shí)際移動(dòng)運(yùn)算時(shí),是對(duì)擴(kuò)大后的32位值進(jìn)行操作。下面的例子說(shuō)明了這一點(diǎn):

// Unsigned shifting a byte value.
class ByteUShift {
static public void main(String args[]) {
int b = 2;
int c = 3; 


a |= 4;
b >>= 1; 
c <<= 1; 
a ^= c;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);


}
}


該程序的輸出如下所示:

a = 3 
b = 1 
c = 6


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java位運(yùn)算
java移位運(yùn)算符:<<(左移)、>>(帶符號(hào)右移)和>>>(無(wú)符號(hào)右移)。
簡(jiǎn)單理解左移運(yùn)算符和右移運(yùn)算符
左移右移無(wú)符號(hào)右移
JAVA_基礎(chǔ)邏輯運(yùn)算符與位運(yùn)算符使用
php 位移運(yùn)算符(<<左移和>>右移)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服