【废话前言】
Hi,我回来了
说到做到,今天更新
@YFSafe 恭喜转正!
【按位与】
运算符:&
所谓按位与,非常好理解
两个十进制数,转成二进制数(这是位运算基本条件)后,数位上两个数都为1,则结果为1,反之为0
举几个例子:
0000000001110010(114)
& 0000001000000010(514)
-----------------------------------
0000000000000010
结果:2
00000000011101111111(1919)
& 00000000001100101010(810)
-----------------------------------------
00000000001100101010
结果:810(这么巧)
很简单吧
【按位或】
运算符:|
这也非常好理解
两个十进制数,转成二进制数后,数位上有一个数为1,结果为1,反之为0
例子:
0000000001110010(114)
| 0000001000000010(514)
-----------------------------------
0000001001110010
结果:626
00000000011101111111(1919)
| 00000000001100101010(810)
-----------------------------------------
00000000011101111111
结果:1919
【取反】
运算符:~
这个更简单了,数位上是1,取反后为0
例子:
~1010101010100011110100100111110010(11451451890)
-----------------------------------------------------------------------
0101010101011100001011011000001101
结果:5728417293
【按位异或】
运算符:^
当两个数的二进制只有一个数位为1,则唯一,反之则为0
例子:
0000000001110010(114)
^ 0000001000000010(514)
-----------------------------------
0000000000000010
结果:2(C中以八进制输出)
【左移/右移】
运算符:<<和>>
将二进制数位向左货向右移
左移例子:
[C] 纯文本查看 复制代码 long x = 11451451890;
x = x << 3; //3是数位,可以改
左移前:
1010101010100011110100100111110010(11451451890)
左移后:
0101010100011110100100111110010000(5712269200)
右移例子:
[C] 纯文本查看 复制代码 long x = 11451451890;
x = x >> 3;
右移前:
1010101010100011110100100111110010(11451451890)
右移后:
左移前:
0001010101010100011110100100111110(1431431486)
简单吧
|