网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月12日漏签0天
c4droid吧 关注:42,863贴子:262,794
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 21回复贴,共1页
<<返回c4droid吧
>0< 加载中...

位运算有什么用呢?技术贴

  • 只看楼主
  • 收藏

  • 回复
  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1 加密
2 数值交换


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先我们先认识一下位运算,有请度娘


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
按位与
a and b
a & b
按位或
a or b
a | b
按位异或
a xor b
a ^ b
取反
~a


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
=== 3. xor运算 ^ ===
异或的符号是^。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是重点


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
重要的事情说1000遍
for(int i=0;i<1000;i++)
cout<<"这是重点"<<endl;


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
xor运算可以用于简单的加密,比如
我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运用1
加密


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//口令 加密
#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;
}
只能这样了


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运用2
不用第3个变量进行两个变量值的交换


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
a=b^(a^b);


  • 大伊Z
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//不借助第三个变量交换两个变量值
//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;
}


  • 2002a1116
  • 孤独求败
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
校验哭了


  • 逍遥红诧
  • 小小白菜
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实位运算在汇编里超有用的,高级语言中还可以用于数据合成,参照GDI中的RGB宏


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 21回复贴,共1页
<<返回c4droid吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示