JAVA位运算符

JAVA\u4f4d\u8fd0\u7b97\u7b26

\u8fd0\u7b97\u7b26 \u542b\u4e49 \u793a\u4f8b
~ \u6309\u4f4d\u975e\uff08NOT\uff09 b = ~a
& \u6309\u4f4d\u4e0e\uff08AND\uff09 c = a & b
| \u6309\u4f4d\u6216\uff08OR\uff09 c = a | b
^ \u6309\u4f4d\u5f02\u6216\uff08XOR\uff09 c = a ^ b
>> \u53f3\u79fb b = a >> 2
>>> \u53f3\u79fb\uff0c\u5de6\u8fb9\u7a7a\u51fa\u7684\u4f4d\u4ee50\u586b\u5145 b = a >>> 2
<< \u5de6\u79fb b = a << 1

\u5f53\u7136\u540c\u6837\u6709 &=\uff0c|=\uff0c^=\uff0c>>=\uff0c>>>=\uff0c<<=\u3002

\u6709\u5173\u8fd9\u4e9b\u64cd\u4f5c\u7684\u7ec6\u8282\u53ef\u4ee5\u53c2\u770b

http://www.pcvc.net/category/content.asp?sendid=247

\u4f4d\u8fd0\u7b97

\u524d\u9762\u4ecb\u7ecd\u7684\u5404\u79cd\u8fd0\u7b97\u90fd\u662f\u4ee5\u5b57\u8282\u4f5c\u4e3a\u6700\u57fa\u672c\u4f4d\u8fdb\u884c\u7684\u3002 \u4f46\u5728\u5f88\u591a\u7cfb\u7edf\u7a0b\u5e8f\u4e2d\u5e38\u8981\u6c42\u5728\u4f4d(bit)\u4e00\u7ea7\u8fdb\u884c\u8fd0\u7b97\u6216\u5904\u7406\u3002C\u8bed\u8a00\u63d0\u4f9b\u4e86\u4f4d\u8fd0\u7b97\u7684\u529f\u80fd\uff0c \u8fd9\u4f7f\u5f97C\u8bed\u8a00\u4e5f\u80fd\u50cf\u6c47\u7f16\u8bed\u8a00\u4e00\u6837\u7528\u6765\u7f16\u5199\u7cfb\u7edf\u7a0b\u5e8f\u3002
\u4e00\u3001\u4f4d\u8fd0\u7b97\u7b26C\u8bed\u8a00\u63d0\u4f9b\u4e86\u516d\u79cd\u4f4d\u8fd0\u7b97\u7b26\uff1a
& \u6309\u4f4d\u4e0e
| \u6309\u4f4d\u6216
^ \u6309\u4f4d\u5f02\u6216
~ \u53d6\u53cd
<< \u5de6\u79fb
>> \u53f3\u79fb

1. \u6309\u4f4d\u4e0e\u8fd0\u7b97 \u6309\u4f4d\u4e0e\u8fd0\u7b97\u7b26"&"\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\u3002\u5176\u529f\u80fd\u662f\u53c2\u4e0e\u8fd0\u7b97\u7684\u4e24\u6570\u5404\u5bf9\u5e94\u7684\u4e8c\u8fdb\u4f4d\u76f8\u4e0e\u3002\u53ea\u6709\u5bf9\u5e94\u7684\u4e24\u4e2a\u4e8c\u8fdb\u4f4d\u5747\u4e3a1\u65f6\uff0c\u7ed3\u679c\u4f4d\u624d\u4e3a1 \uff0c\u5426\u5219\u4e3a0\u3002\u53c2\u4e0e\u8fd0\u7b97\u7684\u6570\u4ee5\u8865\u7801\u65b9\u5f0f\u51fa\u73b0\u3002
\u4f8b\u5982\uff1a9&5\u53ef\u5199\u7b97\u5f0f\u5982\u4e0b\uff1a 00001001 (9\u7684\u4e8c\u8fdb\u5236\u8865\u7801)&00000101 (5\u7684\u4e8c\u8fdb\u5236\u8865\u7801) 00000001 (1\u7684\u4e8c\u8fdb\u5236\u8865\u7801)\u53ef\u89c19&5=1\u3002

\u6309\u4f4d\u4e0e\u8fd0\u7b97\u901a\u5e38\u7528\u6765\u5bf9\u67d0\u4e9b\u4f4d\u6e050\u6216\u4fdd\u7559\u67d0\u4e9b\u4f4d\u3002\u4f8b\u5982\u628aa \u7684\u9ad8\u516b\u4f4d\u6e05 0 \uff0c \u4fdd\u7559\u4f4e\u516b\u4f4d\uff0c \u53ef\u4f5c a&255 \u8fd0\u7b97 ( 255 \u7684\u4e8c\u8fdb\u5236\u6570\u4e3a0000000011111111)\u3002
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

2. \u6309\u4f4d\u6216\u8fd0\u7b97 \u6309\u4f4d\u6216\u8fd0\u7b97\u7b26\u201c|\u201d\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\u3002\u5176\u529f\u80fd\u662f\u53c2\u4e0e\u8fd0\u7b97\u7684\u4e24\u6570\u5404\u5bf9\u5e94\u7684\u4e8c\u8fdb\u4f4d\u76f8\u6216\u3002\u53ea\u8981\u5bf9\u5e94\u7684\u4e8c\u4e2a\u4e8c\u8fdb\u4f4d\u6709\u4e00\u4e2a\u4e3a1\u65f6\uff0c\u7ed3\u679c\u4f4d\u5c31\u4e3a1\u3002\u53c2\u4e0e\u8fd0\u7b97\u7684\u4e24\u4e2a\u6570\u5747\u4ee5\u8865\u7801\u51fa\u73b0\u3002
\u4f8b\u5982\uff1a9|5\u53ef\u5199\u7b97\u5f0f\u5982\u4e0b\uff1a 00001001|00000101
00001101 (\u5341\u8fdb\u5236\u4e3a13)\u53ef\u89c19|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

3. \u6309\u4f4d\u5f02\u6216\u8fd0\u7b97 \u6309\u4f4d\u5f02\u6216\u8fd0\u7b97\u7b26\u201c^\u201d\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\u3002\u5176\u529f\u80fd\u662f\u53c2\u4e0e\u8fd0\u7b97\u7684\u4e24\u6570\u5404\u5bf9\u5e94\u7684\u4e8c\u8fdb\u4f4d\u76f8\u5f02\u6216\uff0c\u5f53\u4e24\u5bf9\u5e94\u7684\u4e8c\u8fdb\u4f4d\u76f8\u5f02\u65f6\uff0c\u7ed3\u679c\u4e3a1\u3002\u53c2\u4e0e\u8fd0\u7b97\u6570\u4ecd\u4ee5\u8865\u7801\u51fa\u73b0\uff0c\u4f8b\u5982 9^5\u53ef\u5199\u6210\u7b97\u5f0f\u5982\u4e0b\uff1a 00001001^00000101 00001100 (\u5341\u8fdb\u5236\u4e3a12)
main(){
int a=9;
a=a^15;
printf("a=%d\n",a);
}

4. \u6c42\u53cd\u8fd0\u7b97 \u6c42\u53cd\u8fd0\u7b97\u7b26\uff5e\u4e3a\u5355\u76ee\u8fd0\u7b97\u7b26\uff0c\u5177\u6709\u53f3\u7ed3\u5408\u6027\u3002 \u5176\u529f\u80fd\u662f\u5bf9\u53c2\u4e0e\u8fd0\u7b97\u7684\u6570\u7684\u5404\u4e8c\u8fdb\u4f4d\u6309\u4f4d\u6c42\u53cd\u3002\u4f8b\u5982\uff5e9\u7684\u8fd0\u7b97\u4e3a\uff1a ~(0000000000001001)\u7ed3\u679c\u4e3a\uff1a1111111111110110

5. \u5de6\u79fb\u8fd0\u7b97 \u5de6\u79fb\u8fd0\u7b97\u7b26\u201c<<\u201d\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\u3002\u5176\u529f\u80fd\u628a\u201c<< \u201d\u5de6\u8fb9\u7684\u8fd0\u7b97\u6570\u7684\u5404\u4e8c\u8fdb\u4f4d\u5168\u90e8\u5de6\u79fb\u82e5\u5e72\u4f4d\uff0c\u7531\u201c<<\u201d\u53f3\u8fb9\u7684\u6570\u6307\u5b9a\u79fb\u52a8\u7684\u4f4d\u6570\uff0c
\u9ad8\u4f4d\u4e22\u5f03\uff0c\u4f4e\u4f4d\u88650\u3002\u4f8b\u5982\uff1a a>\u201d\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\u3002\u5176\u529f\u80fd\u662f\u628a\u201c>> \u201d\u5de6\u8fb9\u7684\u8fd0\u7b97\u6570\u7684\u5404\u4e8c\u8fdb\u4f4d\u5168\u90e8\u53f3\u79fb\u82e5\u5e72\u4f4d\uff0c\u201c>>\u201d\u53f3\u8fb9\u7684\u6570\u6307\u5b9a\u79fb\u52a8\u7684\u4f4d\u6570\u3002
\u4f8b\u5982\uff1a\u8bbe a=15\uff0ca>>2 \u8868\u793a\u628a000001111\u53f3\u79fb\u4e3a00000011(\u5341\u8fdb\u52363)\u3002 \u5e94\u8be5\u8bf4\u660e\u7684\u662f\uff0c\u5bf9\u4e8e\u6709\u7b26\u53f7\u6570\uff0c\u5728\u53f3\u79fb\u65f6\uff0c\u7b26\u53f7\u4f4d\u5c06\u968f\u540c\u79fb\u52a8\u3002\u5f53\u4e3a\u6b63\u6570\u65f6\uff0c \u6700\u9ad8\u4f4d\u88650\uff0c\u800c\u4e3a\u8d1f\u6570\u65f6\uff0c\u7b26\u53f7\u4f4d\u4e3a1\uff0c\u6700\u9ad8\u4f4d\u662f\u88650\u6216\u662f\u88651 \u53d6\u51b3\u4e8e\u7f16\u8bd1\u7cfb\u7edf\u7684\u89c4\u5b9a\u3002Turbo C\u548c\u5f88\u591a\u7cfb\u7edf\u89c4\u5b9a\u4e3a\u88651\u3002

\u4e0e
0&&0 =0
1&&0 =0
0&&1 =0
1&&1 =1
\u6216
0||0 =0
1||0 =1
0||1 =1
1||1 =1
\u5f02\u6216\u662f
1^0=1
0^1=1
0^0=0
1^1=0

\u4f8b\u5b50
11001010 \u4e0e
00011011
\u6309\u4f4d\u4e0e \u6309\u4f4d\u6216 \u6309\u4f4d\u5f02\u6216
00001010 11011011 11010001

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。

1.与运算符
与运算符用符号“&”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 与的结果是:"+(a&b));
}
}
运行结果
a 和b 与的结果是:128
下面分析这个程序:
“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。

2.或运算符
或运算符用符号“|”表示,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的结果是:"+(a|b));
}
}
运行结果
a 和b 或的结果是:129
下面分析这个程序段:
a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

3.非运算符
非运算符用符号“~”表示,其运算规律如下:
如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}

4.异或运算符
异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 与 b 异或的结果是:"+(a^b));
}
}
运行结果
a 与 b 异或的结果是:13
分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。

  • JAVA浣嶈繍绠楃
    绛旓細1锛庝笌杩愮畻绗 涓庤繍绠楃鐢ㄧ鍙封&鈥濊〃绀猴紝鍏朵娇鐢ㄨ寰嬪涓嬶細涓や釜鎿嶄綔鏁颁腑浣嶉兘涓1锛岀粨鏋滄墠涓1锛屽惁鍒欑粨鏋滀负0锛屼緥濡備笅闈㈢殑绋嬪簭娈点俻ublic class data13 { public static void main(String[] args){ int a=129;int b=128;System.out.println("a 鍜宐 涓庣殑缁撴灉鏄細"+(a&b));} } 杩愯缁撴灉 a ...
  • JAVA浣嶈繍绠鎬庝箞鐢ㄧ殑???
    绛旓細Java 浣嶈繍绠 Java 浣嶈繍绠梉杞琞涓锛孞ava 浣嶈繍绠1.琛ㄧず鏂规硶锛氥鍦↗ava璇█涓紝浜岃繘鍒舵暟浣跨敤琛ョ爜琛ㄧず锛屾渶楂樹綅涓虹鍙蜂綅锛屾鏁扮殑绗﹀彿浣嶄负0锛岃礋鏁颁负1銆傝ˉ鐮佺殑琛ㄧず闇瑕佹弧瓒冲涓嬭姹傘傘(l)姝f暟鐨勬渶楂樹綅涓0锛屽叾浣欏悇浣嶄唬琛ㄦ暟鍊兼湰韬(浜岃繘鍒舵暟)銆傘(2)瀵逛簬璐熸暟锛岄氳繃瀵硅鏁扮粷瀵瑰肩殑琛ョ爜鎸変綅鍙栧弽锛屽啀瀵...
  • JAVA浣嶈繍绠楃
    绛旓細浣嶆搷浣滅鏉ユ簮浜 C 璇█闈㈠悜搴曞眰鐨勬搷浣,閭f椂鎴戜滑缁忓父闇瑕佺洿鎺ユ搷绾电‖浠,璁剧疆纭欢瀵勫瓨鍣ㄥ唴鐨勪簩杩涘埗浣嶃Java鐨勮璁″垵琛锋槸宓屽叆鐢佃鏈洪《鐩掑唴,鎵浠ヨ繖绉嶄綆绾ф搷浣滀粛琚繚鐣欎簡涓嬫潵銆備絾鏄,鎴戜滑鍙兘涓嶄細杩囧鍦颁娇鐢ㄥ埌浣嶈繍绠楃銆 濡傛灉涓や釜杈撳叆浣嶉兘鏄 1,鍒欐寜浣嶁滀笌鈥濇搷浣滅(&)鐢熸垚涓涓緭鍑轰綅 1;鍚﹀垯鐢熸垚涓涓緭鍑轰綅0銆傚鏋滀袱涓...
  • 姹:JAVA涓父鐢浣嶈繍绠楃鍙婂叾鐢ㄦ硶璇﹁В
    绛旓細int z = x&y //z绛変簬浜岃繘鍒舵暟鐨01000000 鍗杩愮畻缁撴灉涓簔绛変簬浜岃繘鍒舵暟01000000銆備綅鎴栥佷綅闈炪佷綅寮傛垨鐨勮繍绠楁柟娉曠被鍚屻傦紙2锛夊彸绉绘槸灏嗕竴涓簩杩涘埗鏁版寜鎸囧畾绉诲姩鐨勪綅鏁板悜鍙崇Щ浣嶏紝绉绘帀鐨勮涓㈠純锛屽乏杈圭Щ杩涚殑閮ㄥ垎鎴栬呰ˉ0锛堝綋璇ユ暟涓烘鏃讹級锛屾垨鑰呰ˉ1锛堝綋璇ユ暟涓鸿礋鏃讹級銆傝繖鏄洜涓烘暣鏁板湪鏈哄櫒鍐呴儴閲囩敤琛ョ爜...
  • JAVA涓&&鍜&銆亅|鍜寍鐨勫尯鍒?
    绛旓細鈥1銆Java涓&鍙仛鎸変綅涓,&&鍙仛鐭矾涓,瀹冧滑鐨勫尯鍒槸: & 鏃㈡槸浣嶈繍绠楃鍙堟槸閫昏緫杩愮畻绗,&鐨勪袱渚у彲浠ユ槸int,涔熷彲浠ユ槸boolean琛ㄨ揪寮,褰&涓や晶鏄痠nt鏃,瑕佸厛鎶婅繍绠楃涓や晶鐨勬暟杞寲涓轰簩杩涘埗鏁板啀杩涜杩愮畻,鑰岀煭璺笌(&&)鐨勪袱渚ц姹傚繀椤绘槸甯冨皵琛ㄨ揪寮忋備妇渚嬪涓:12&5 鐨勫兼槸澶氬皯...鈥...
  • Java涓&鏄粈涔堟剰鎬?
    绛旓細&鍦java涓〃绀浣嶈繍绠楃鍗筹紝鎸変綅涓庤繍绠椼傜敤鏉ュ浜岃繘鍒朵綅杩涜鎿嶄綔锛屼负浜屽厓杩愮畻绗︼紝鏅鸿兘涓烘暣鍨嬪拰瀛楃鍨嬫暟鎹傚鏋滀袱涓繍绠楁暟閮芥槸1锛屽垯缁撴灉涓1.鍏朵粬鎯呭喌涓嬶紝缁撴灉鍧囦负闆讹細00101010(鍗佽繘鍒跺间负42)&00001111(鍗佽繘鍒跺间负15)=00001010(鍗佽繘鍒跺10)鑰屽湪java璇█涓 i1&=3鐨勮〃杈惧紡鐨勫睍寮褰㈠紡涓猴細i1=i1&3,...
  • java杩愮畻涓&鏄粈涔堟剰鎬,姣斿a=1;b=2;a&b=澶氬皯
    绛旓細&鏄綅鎿嶄綔绗,鈥滄寜浣嶄笌鈥濓紱1杞垚浜岃繘鍒 01锛2杞垚浜岃繘鍒 10锛沘&b=00杞垚鍗佽繘鍒朵负0銆浣嶈繍绠楃鏈夛細&(鎸変綅涓)銆亅(鎸変綅鎴)銆乛(鎸変綅寮傛垨)銆亊 (鎸変綅鍙栧弽)銆備紭鍏堢骇浠庨珮鍒颁綆锛屼緷娆′负~銆&銆乛銆亅銆傛寜浣嶄笌杩愮畻鏈変袱绉嶅吀鍨嬬敤娉曪紝涓鏄彇涓涓綅涓蹭俊鎭殑鏌愬嚑浣嶏紝濡備互涓嬩唬鐮佹埅鍙杧鐨勬渶浣7浣嶏細x ...
  • Java涓殑杩愮畻绗鏈夊摢浜
    绛旓細鍏崇郴杩愮畻绗︼細鐢ㄤ簬鍒ゆ柇涓や釜鏁版嵁鐨勫ぇ灏忔垨鐩哥瓑鍏崇郴锛岃繑鍥炰竴涓竷灏斿(true鎴杅alse)銆傚父鐢ㄧ殑鍏崇郴杩愮畻绗︽湁 < > <= >= == !=銆傞昏緫杩愮畻绗︼細鐢ㄤ簬杩涜閫昏緫涓庛侀昏緫鎴栥侀昏緫闈炵瓑鎿嶄綔锛岃繑鍥炰竴涓竷灏斿(true鎴杅alse)銆傚父鐢ㄧ殑閫昏緫杩愮畻绗︽湁 && || !銆浣嶈繍绠楃锛氱敤浜庡浜岃繘鍒朵綅杩涜鎿嶄綔锛屽鎸変綅涓庛佹寜浣嶆垨...
  • JAVA閲岄潰鐨浣嶈繍绠楃>>,<<,>>>鏄粈涔堟剰鎬,璇蜂妇涓垪瀛愬叿浣撹鏄庝竴涓?_鐧 ...
    绛旓細java 涓細>>甯︾鍙峰彸绉 (n>>2 灏嗘暣鍨嬪煎甫绗﹀彿鍙崇Щ2浣 锛<<甯︾鍙峰乏绉 (n<<2 灏嗘暣鍨嬪煎甫绗﹀彿宸︾Щ2浣 锛>>>鏃犵鍙峰彸绉 (n>>>2 灏嗘暣鍨嬪兼棤绗﹀彿鍙崇Щ2浣 锛 鍦32浣嶇郴缁熶腑浠讳綍鏁板乏绉(鍙崇Щ)32浣嶈繕鏄畠鏈韩 渚嬪:�6�1a=a锛滐紲2灏哸...
  • java涓 浠涔堟槸 鍒嗛噺杩愮畻绗• ?
    绛旓細&鏄JAVA涓殑浣嶉昏緫杩愮畻绗锛岀О鈥滄寜浣嶄笌鈥濓紝杩愮畻瑙勫垯鏄細鈥&鈥濅袱涓繍绠楁暟閮戒负1鏃讹紝缁撴灉涓1锛屽叾浣欑粨鏋滀负0锛屽嵆锛氬嵆锛0&0=0锛0&1=0锛1&0=0锛1&1=1鐢ㄩ旓細(1)娓呴浂杩愮畻瀵硅薄锛氬師鏉ョ殑鏁颁腑涓1鐨勪綅锛屾柊鏁颁腑鐩稿簲浣嶄负0銆傦紙2锛夊彇涓涓暟涓煇浜涙寚瀹氫綅銆傚鎯宠鍙栦竴涓暣鏁癮锛堝崰2涓瓧鑺傦級鐨勪綆锛堥珮...
  • 扩展阅读:javascript入门 ... java python ... java必背代码大全 ... java简单入门程序代码 ... java public class ... substring截取字符串 ... java常用代码大全 ... java编程实例及讲解 ... java基本输入语句 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网