一、取反  ~

#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)、位运算(一)的更多相关文章

  1. Mysql 查询—按位运算

    前言:虽说这是件小事儿,但本宝宝思前想后,还是为它留下一笔,嘿嘿.反正写博客不浪费纸和笔!好久没有开启我的逗比模式了,我亲爱的乖徒弟DBA,DBB,DBAA等,好久不见你们,遥祝幸福快乐+DB. 整个 ...

  2. zoj--3870--Team Formation(位运算好题)

    Team Formation Time Limit: 3000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. Java二进制和位运算,这一万字准能喂饱你

    基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...

  4. 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 ...

  5. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解

    本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表   位运算   SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...

  6. JavaScript 位运算总结&拾遗

    最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...

  7. javascript 位运算

    位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...

  8. javascript位运算

    javascript作为一门高级语言,他尽量让开发人员减少思考底层的硬件工作原理,而将精力集中在逻辑开发的层面.不过,不论这门语言多么高级,我们必须知道数据依然以bits的形式存储,有时候我们会直接与 ...

  9. 位运算(bit)

    位运算(bit) Time Limit:2000ms   Memory Limit:64MB [题目描述] lyk最近在研究位运算.它发现除了xor,or,and外还有很多运算.它新定义了一种运算符“ ...

随机推荐

  1. react-native-Cocoapods-Swift-Project

    https://reactnative.cn/docs/integration-with-existing-apps/ 1.创建一个xcode工程,single View就行,项目语言选择swift, ...

  2. CSIS 1119B/C Introduction to Data Structures and Algorithms

    CSIS 1119B/C Introduction to Data Structures and Algorithms Programming Assignment TwoDue Date: 18 A ...

  3. 在linux服务器下JMeter如何执行jmx性能脚本

    准备环境:linux平台.jmeter安装包. jdk   一. 安装jdk        jdk的安装可以参考以下内容        http://jingyan.baidu.com/article ...

  4. jps命令详解

    JPS 名称: jps - Java Virtual Machine Process Status Tool 命令用法: jps [options] [hostid] options:命令选项,用来对 ...

  5. python函数带()与否

    一.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成二.带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果 进程和线程的target=fun ...

  6. MFC DDX_Control 与 DDX_Text

    DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, DDX_Control()的作用可以理解为把变量和控件本身关联起来, DoDataExchange(pD ...

  7. 多个if、elif和else的搭配使用

    if-if-if-搭配成的语句块,会一个个去匹配是否满足if里面的语句; if与elif的搭配成的语句块,当匹配到if或者elif语句判断为True的时候,那么不会执行下面elif以及else里面的语 ...

  8. 一分钟学会Xmind

  9. eclipse中tomcat的add and Remove找不到项目

    在我们运行项目前,都需要将项目部署到tomcat上,但是有时我们会遇到这种情况:项目明明存在,但是eclipse中tomcat的add and remove找不到项目,无法部署,那么这个问题该如何解决 ...

  10. mysql导入本地文件(作业)

    1.准备本地文件(pet.txt) 2.在CMD中启动mysql服务,然后输入以下命令导入(pet.txt) load data local infile '路劲' into table pet; 3 ...