AND 汇编:and C语言:&
将每一位进行and运算,如果都是1那么结果为1,否则0
AND 0100 1101 C语言: 1 = 77&1
0000 0001
----------------------
0000 0001 可以判断第几位是0还是1
OR 汇编:or C语言 |
将每一位进行or运算,其中一个是1就是1,都是0则为0
XOR 汇编: xor C语言^
将每一位进行xor运算,其中只有一个是1,则为1,都是1或者都是0则为0
Not 汇编: not C语言 ~
将每一位取反就是not运算
计算机是不会做加法的,它是通过位运算做加减乘除
4+5 = ?
0100 0100
0101 先做XOR 异或运算 0101 在做and 与运算
----------------------------------------------------
0001 0100 如果与运算全部都是0,那么结果就是刚才异或的结果,不是则再次异或和and验证结果,并且左移一位
0001 这次是把前面的异或结果和与 运算结果 运算
1000 这里是前面与运算的结果,结果没算完,则要左移一位再次重复前面的步奏,一直到and运算全部为0,那么异或的结果就是最终结果
-------------------
1001
0001 再次and运算 验证结果是否运算完毕
1000
------------
0000 全部是0了,运算完毕,那么结果就是1001 ,1001 对应的十进制就是9,这就是计算机算加法
乘法
3*8 = ?
我们可以看成8 + 8 +8
那么这样就好办了,利用加法的位运算即可算出乘法,减除同理
用异或进行加密与解密
原数据:5AC
秘钥:45 10101100 00000101xor 01000101 xor 01000101---------------- -------------- 11101001 01000000 加密后数据为 0100000011101001 40E9 解密: 01000000 11101001xor 01000101 xor 01000101-------------------------------------------- 00000101 10101100 解密后数据为 0000010110101100 05AC
加密就是和秘钥 进行异或运算,得到加密到的数据,
然后在用秘钥进行异或一算,就是解密的数据