位运算是指按二进制位进行的运算。在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断。

C语言提供的位运算符有:

运算符

含义

功能

按位与

如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。

|

按位或

两个相应的二进制位中只要有一个为1,该位的结果值为1。

按位异或

若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真)

取反

~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。

<<

左移

左移运算符是用来将一个数的各二进制位全部左移N位,右补0。

>>

右移

表示将a的各二进制位右移N位,移到右端的低位被舍弃,对无符号数,高位补0。

与逻辑:

将PA口的第0位清0(即最低位输出低0v电平),其余位保持不变:   PORTA口应同‘11111110’进行与运算

二进制:11111110 的十六进制为:0xFE,C语言代码:PORTA=PORTA&0xFE;一般采用c语言的“&=‘运算符,通常写成

PORTA&=0xFE;   执行此语句后,PORTA口的第0位将输出低电平。

或逻辑:

将PA口的第7位置1(即最高位输出高电平)其余为保持不变,PORTA应与‘10000000’进行或运算

即c语言:PORTA=PORTA|0x80 ;采用或赋值运算符,通常写成 PROTA|=0x80 ;  二进制‘10000000’的十六进制是0x80;

非逻辑:

c语言:PORTA~=0x0F;//将0x0F=‘00001111‘取反后 '11110000‘=0xF0 赋值给PORTA,通常和其他逻辑运算符一起使用

异或逻辑:

将PA口的第7位翻转,PORTA^=0x80,即执行此语句一次,PORTA口的第7位状态变化一次,由0变1,或由1变0,可以周期性的控制一个灯的亮灭。

移位操作:

判断PA口的第7位是否为0,c语言 if (PINA&(1<<7)==0)       1<<7  结果为0x80,也可写为 if (PINA&0x80)==0)

单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解相关推荐

  1. matlab中逻辑非运算,MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)

    图像的与.或.非.异或逻辑运算涉及到了&.|.~和xor符号 close all;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clc; clear all; I=imrea ...

  2. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...

  3. 【C语言】小妹不懂指针和数组的关系?那就安排指针数组关系详解

    目录 前言 一.什么是数组 二.什么是指针 三.指针变量的大小 四.数组和指针的关系 五.指针变量的自增自减运算 六.两个参数确定一个数组 七.字符型指针和字符型数组 总结 写在最后 前言 前段时间整 ...

  4. C语言---函数介绍详解

    生活的全部意义在于无穷地探索尚未知道的东西,在于不断地增加更多的知识--左拉 文章目录 前言 函数 模块化程序设计方法 函数的定义 函数的分类 函数定义角度 库函数 自定义函数 函数形式角度 无参函数 ...

  5. c语言 字节 半字 字,PLC的位,半字节,字节,字介绍

    PLC采用五种数据类型来形成不同的指示.下面是数据类型的解释. 打开今日头条,查看更多精彩图片 位,半字节,字节,字与双字之间的关系如下 二进制,八进制,十进制,BCD,十六进制 DVP-PLC内部依 ...

  6. C语言中宏定义宏编译的使用#if,#ifdef,#ifndef,#elif,#else,#endif,defined使用详解,可以实现和if else一样的效果

    #define            定义一个预处理宏 #undef            取消宏的定义 #if                   编译预处理中的条件命令,相当于C语法中的if语句 ...

  7. ifc97水蒸气c语言计算程序,IFC97水和蒸汽性质计算公式介绍详解.doc

    水和水蒸气热力性质计算公式 工业用1967年IFC公式 1967年IFC公式的特点 (1)将整个水和水蒸气的研究区域分为6个子区域(图 71图 71.折合比体积χ作为自变量:后者则以折合温度.折合压力 ...

  8. MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)

    https://www.cnblogs.com/chenwenyan/p/6836241.html

  9. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解

    欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...

最新文章

  1. 全面理解目标检测中的anchor
  2. poj2367拓扑排序模版题
  3. getResources().getIdentifier(textView01, id, cn.xxx.xxx);
  4. 天猫权益平台如何10倍的提升数据库查询响应时间
  5. asp遍历前端的所有控件
  6. 中国钢铁行业战略规划及项目建设动态分析报告2021-2027年
  7. 关于上上文hashmap的深入-hashmap产生死锁的详解
  8. JSP EL表达式使用
  9. linux mysql revoke_Linux环境下MySQL基础命令(4)----数据库的用户授权
  10. 渗透测试之Nmap命令(三) idle 扫描
  11. linux系统grep用法,Linux系统中怎么使用grep命令?
  12. WAS6.1在JDK1.5环境下JSP无法编译问题
  13. Java设计模式系列之迭代器模式
  14. 安川焊接机器人做圆弧运动编程_安川焊接机器人编程
  15. 网络流量监控(局域网)
  16. 科普:互联网的岗位职责和技能
  17. vim 配置(有插件)
  18. Android一步一步实现一款实用的Android广告栏
  19. 2038年问题 linux内核5.6,Linux Kernel 5.6 开发者已率先做好准备 应对 2038 年问题
  20. 大脑构造图与功能解析_大脑的结构功能及作用是怎样?

热门文章

  1. 去除字符串中所有的空格
  2. Kolmogorov-Smirnov检验
  3. 成都男子因女司机别车将其暴打 同款行车记录仪获热销
  4. som神经网络聚类简单例子_深度聚类的可视化解释
  5. 树的数据结构代码_如何以无代码方式学习树数据结构
  6. Java输出水仙花数
  7. 对uni-app框架的认识
  8. 经典sql基本语句大全
  9. vue中给字段base 64加密
  10. 2021-06-10 multisim仿真,高温报警电路555