位运算有什么用呢?技术贴
c4droid吧
全部回复
仅看楼主
level 9
大伊Z🐼 楼主
1 加密
2 数值交换
[呵呵]
2016年08月17日 10点08分 1
level 9
大伊Z🐼 楼主
首先我们先认识一下位运算,有请度娘
2016年08月17日 10点08分 2
level 9
大伊Z🐼 楼主
位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
2016年08月17日 10点08分 3
level 9
大伊Z🐼 楼主
按位与
a and b
a & b
按位或
a or b
a | b
按位异或
a xor b
a ^ b
取反
~a
2016年08月17日 10点08分 4
level 9
大伊Z🐼 楼主
=== 3. xor运算 ^ ===
异或的符号是^。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a
2016年08月17日 10点08分 5
level 9
大伊Z🐼 楼主
这是重点
2016年08月17日 10点08分 6
level 9
大伊Z🐼 楼主
重要的事情说1000遍[呵呵] [捂嘴笑]
for(int i=0;i<1000;i++)
cout<<"这是重点"<<endl;
2016年08月17日 10点08分 8
level 9
大伊Z🐼 楼主
xor运算可以用于简单的加密,比如
我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。
2016年08月17日 10点08分 9
level 9
大伊Z🐼 楼主
运用1
加密
2016年08月17日 10点08分 10
level 9
大伊Z🐼 楼主
//口令 加密
#include <iostream>
using namespace std;
int main()
{
// 输入口令 kl 19980619
// mes 1314520
int mes_know= 19197843;
cout<<"你知道的信息是:"<<mes_know<<endl;
cout<<"你喜欢的人给你发了口令:19980619"<<endl;
int kl;
cin>>kl;
int mes=(kl^mes_know);
cout<<"你喜欢的人想对你说"<<mes<<endl;
return 0;
}
[呵呵][你懂的]只能这样了
2016年08月17日 10点08分 11
level 9
大伊Z🐼 楼主
运用2
不用第3个变量进行两个变量值的交换[呵呵]
2016年08月17日 10点08分 13
level 9
大伊Z🐼 楼主
a=b^(a^b);
2016年08月17日 10点08分 15
level 9
大伊Z🐼 楼主
[呵呵]//不借助第三个变量交换两个变量值
//author QQ 1577432674
//2016-08-17 18:44
#include <iostream>
using namespace std;
int main()
{
int a=1,b=2;
cout<<"a="<<a<<"b="<<b<<endl;
a=(a^b);
//a 0001
//b 0010
//a=1100
b=(a^b);
//a 1100
//b 0010
//b=0001 =1
a=(a^b);
//a 1100
//b 0001
//a=0010 =2
cout<<"a="<<a<<endl<<"b="<<b<<endl;
return 0;
}
2016年08月17日 10点08分 16
简单的位运算而已[呵呵],学c++
2016年08月17日 22点08分
这种东西最好不要用,至少要判断非0,还不如直接用中间变量,
2016年08月19日 10点08分
level 12
校验哭了
2016年08月17日 16点08分 18
[疑问]
2016年08月17日 22点08分
level 2
其实位运算在汇编里超有用的,高级语言中还可以用于数据合成,参照GDI中的RGB宏
2016年09月09日 03点09分 22
1