在计算机语言中,数字的表现形式其实是以二进制方式保存,比如
int a = 1 ;
并不是直接将1赋予a,由于1是整型,所以在内存中开辟了一块四个字节大小(一个8个比特位)的空间来存放,但存放的并不是1这个是数字,而是一个32个比特位的二进制数1,即00000000000000000000000000000001。
而这个
按位与(&)
二进制位都为1才是1,否则为0;
例如:
9:00000000000000000000000000001001
3:00000000000000000000000000000011
9&3则是:
都是0,所以红框内二进制位都是0。
红框内为0和1,所以为0;
最后一位都为1,才是1;
所以9&3的结果为00000000000000000000000000000001=1;
按位或(|)
二进制位有1则为1,都为0才是0;
9:00000000000000000000000000001001
3:00000000000000000000000000000011
9|3的结果为
00000000000000000000000000001011=11;
按位异或(^)
二进制位不相同1,其他为0;
9:00000000000000000000000000001001
3:00000000000000000000000000000011
9^3=
00000000000000000000000000001010=10
&(与):真真为真,一假为假(一为0,则为0)(例如: 0011&0101 = 0001)
| (或):一真为真,假假为假(一为1,则为1)(例如: 0011|0101 =0111)
~(非):真为假,假为真(~0011 = 1100)
^(异或):不同为真,相同为假(例如: 0011|0101 =1001)
<<(左移):二进制向左移动一位,末尾补0
>>(右移): 二进制向右移动一位 101101 >>1 101101->10110