[c/c++] programming之路(30)、位运算(一)
一、取反 ~
#include<stdio.h>
#include<stdlib.h> void main(){
unsigned char ch=; //0000 1111 char的单位是字节,1B=8bit,所以是8位
unsigned char fch=~ch; //1111 0000 取反
unsigned char ffch=~fch;//0000 1111 printf("%d,%d,%d\n",ch,fch,ffch);
system("pause");
}

注意:取反运算符不改变操作数的值,赋值运算符才会改变。
二、与运算 &
#include<stdio.h>
#include<stdlib.h> //位与 1,1->1 01,10,00->0
//1&0=0 , 0&0=0 ->清零
//1&1=1 ,0&1=0 ->保留某些位不变 void main0(){
unsigned char ch1=; //0000 0011
unsigned char ch2=; //1111 0000
unsigned char ch3=; //1111 1111 printf("%d\n",ch1&ch2); //0000 0000 0
printf("%d\n",ch1&ch3); //0000 0011 3
printf("%d\n",ch2&ch3); //1111 0000 240
system("pause");
} //位与实现按位清零
void main1(){
unsigned char ch1=; //1111 1111
unsigned char ch2=; //0000 1111
unsigned char ch3=; //1111 0000 printf("%d\n",ch1&ch2); //清零高四位
printf("%d\n",ch1&ch3); //清零低四位
printf("%d\n",ch1&); //全部清零
system("pause");
} //位与实现取出指定位
void main(){
unsigned char ch=; //1010 1001
unsigned char ch1=; //0011 1100
//0010 1000 40 printf("%d\n",ch&ch1); //取出中间四位
system("pause");
}
三、或运算 |
#include<stdio.h>
#include<stdlib.h> //位或运算 1|1=1 1|0=1 0|1=1 0|0=0
void main0(){
unsigned char ch=; //1010 1001
unsigned char ch1=; //1111 0000
//1111 1001 249
printf("%d\n",ch|ch1);
system("pause");
} //位或运算符可以让某些位变成1 1|0 = 1|1 =1
// 0|1=1 0|0=0 与0相或不改变
void main(){
unsigned char ch=; //1010 1001
unsigned char ch1=; //0000 1111
//1010 1111 实现低四位全部变1
printf("%d\n",ch|ch1);
system("pause");
}
四、异或运算 ^(相同为0,相异为1)
不借助中间变量,实现两变量交换值
#include<stdio.h>
#include<stdlib.h> //异或 1^1=0 1^0=1 0^1=1 0^0=0
void main0(){
unsigned char ch1=; //1010 1001
unsigned char ch2=; //0000 1111
//1010 0110 166
printf("%d\n",ch2^ch1);
system("pause");
} //异或可以实现反转
void main1(){
unsigned char ch1=; //1010 1001
unsigned char ch2=; //1111 1111 全部反转
//0101 0110 86
printf("%d\n",ch2^ch1);
system("pause");
}
void main2(){
unsigned char ch1=; //1010 1001
unsigned char ch2=; //0011 1100 指定位反转(中间反转)
//1001 0101 149
printf("%d\n",ch2^ch1);
system("pause");
}
//异或交换两个变量
//不借助中间变量,实现两个变量的交换——>面试和嵌入式开发
//x,y交换值 x=x^y;y=x^y;x=x^y
/*
等同于加减法实现交换值
x=20,y=10;
x=x+y; //x=30,y=10
y=x-y; //x=30,y=20
x=x-y; //x=10,y=20
*/
void main(){
unsigned char ch1=; //0001 0100
unsigned char ch2=; //0000 1010
printf("%d,%d\n",ch1,ch2); ch1=ch1^ch2;
ch2=ch1^ch2;
ch1=ch1^ch2; printf("交换之后%d,%d\n",ch1,ch2);
system("pause");
}
五、位运算总结
#include<stdio.h>
#include<stdlib.h> void main(){
unsigned char ch1=; //1010 1000
unsigned char ch2=; //1000 0101 printf("&与:%d\n",ch1&ch2); //1000 0000 128
printf("|或:%d\n",ch1|ch2); //1010 1101 173
printf("^异或:%d\n",ch1^ch2); //0010 1101 45
unsigned char ch3=~ch1,ch4=~ch2;
printf("~反:%d,%d %d,%d\n",ch3,ch4,~ch1,~ch2);
system("pause");
}

[c/c++] programming之路(30)、位运算(一)的更多相关文章
- Mysql 查询—按位运算
前言:虽说这是件小事儿,但本宝宝思前想后,还是为它留下一笔,嘿嘿.反正写博客不浪费纸和笔!好久没有开启我的逗比模式了,我亲爱的乖徒弟DBA,DBB,DBAA等,好久不见你们,遥祝幸福快乐+DB. 整个 ...
- zoj--3870--Team Formation(位运算好题)
Team Formation Time Limit: 3000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- Java二进制和位运算,这一万字准能喂饱你
基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解
本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表 位运算 SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...
- JavaScript 位运算总结&拾遗
最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...
- javascript 位运算
位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...
- javascript位运算
javascript作为一门高级语言,他尽量让开发人员减少思考底层的硬件工作原理,而将精力集中在逻辑开发的层面.不过,不论这门语言多么高级,我们必须知道数据依然以bits的形式存储,有时候我们会直接与 ...
- 位运算(bit)
位运算(bit) Time Limit:2000ms Memory Limit:64MB [题目描述] lyk最近在研究位运算.它发现除了xor,or,and外还有很多运算.它新定义了一种运算符“ ...
随机推荐
- 邮件服务器安装--Postfix + Dovecot + Squirrelmail--CentOS 6.4
英文原文链接 : http://www.unixmen.com/install-postfix-mail-server-with-dovecot-and-squirrelmail-on-centos- ...
- stm32直流电机驱动与测速代码配套视频资料
说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...
- 新人上手:如何做好一个App的推广?
App推广是现在所有公司都绕不开的槛,而一般App推广又分为线上线下两个方面,其中,App线上推广是互联网时代运营人员接触最多的一种推广方式.一款App应用推广的最终目的是为了吸引目标用户,为推销的产 ...
- 洛谷P4640 王之财宝 [BJWC2008] 数论
正解:容斥+Lucas+组合数学 解题报告: 传送门! 和上一篇题解的题差不多,,,双倍经验趴大概算 还是说下还是有点儿区别的来着$QwQ$ 两个小差别分别港下$QwQ$ 首先有$m-n$件是无穷个的 ...
- shell 字符串比较 算数比较 文件条件测试
set-group-id即set-gid -->授予了程序其所在组的访问权限 set-user-id即set-uid -->授予了程序其拥有者的访问权限而不是其使用者的访问权限 set-g ...
- log4j日志输出框架
什么是log4j框架呢? log4j是一个日志输出框架,用于输出日志的.比如MyBatis的日志就是通过log4j输出的,主流框架都是log4j输出的,Spring框架 也可以通过log4j输出日志! ...
- How to use draggable attribute?怎样使用拖拽属性代码分享
6.7 Drag and dropSupport: dragndropChrome for Android NoneChrome 4+iOS Safari 11.0+UC Browser for An ...
- (转载)Oracle procedure 基本语法
转自:http://www.cnblogs.com/wolfplan/p/4004624.html 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDUR ...
- python小程序--Three(三级菜单)
#!/usr/bin/env python # _*_ coding:utf8 _*_ data = { "山东省":{ "滨州市":{"惠民县&qu ...
- 新增职责 不能从IE进入的问题 此责任无可用函数 (转)
此责任无可用函数(The Function Is Not Available Under The Responsibility) When attempting to navigate to a fu ...