c51语言中 位取反指令,C51的几种位操作运算说明
在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能。
#define uchar unsigned char
/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从0到7,下同*/
uchar bittest(uchar num,uchar bit)
{ if(num>>bit&0x01==1)
return 1;
else
return 0;
}
uchar bitclr(uchar num,uchar bit) /*清除某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num&~bit_value[bit];
}
uchar bitset(uchar num,uchar bit) /*设置某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num|bit_value[bit];
}
uchar bitcpl(uchar num,uchar bit) /*取反某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
if(num>>bit&0x01==1)
return num&~bit_value[bit];
else
return num|bit_value[bit];
}
/*以下主程序演示,调用时,可以直接给出数值,也可以给出变量名*/
void main(void)
{
uchar xx=0xfe;
xx=bitset(xx,0);
printf("The set out is %x\n",xx);
printf("The clr out is %x\n",bitclr(255,0));
printf("The test out is %x\n",bittest(0xff,0));
printf("The cpl out is %x\n",bitcpl(0x00,7));
}
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
c51语言中 位取反指令,C51的几种位操作运算说明相关推荐
- c语言单片机位取反指令,51单片机位及位操作指令
我们已经习惯了"位"一位就是一盏灯的亮和灭,而我们学的指令却全都是用"字节"来介绍的:字节的移动.加法.减法.逻辑运算.移位等等.用字节来处理一些数学问题,比如 ...
- c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...
[判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...
- c语言中用于程序化结构设计的三种结构是,c语言中用于结构化程序设计的3种基本结构是...
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. c语言中用于结构化程序设计的3种基本结构是顺序结构.选择结构.循环结构. 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出 ...
- 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。
[判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...
- c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号
window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...
- c51转汇编语言窗口,在C51语言中如何嵌入汇编语言
keil C 语言中嵌入汇编语言进行混合编程,方法如下: 1.在C 文件中要嵌入汇编代码片以如下方式加入汇编代码 #pragma ASM ; Assembler Code Here #pragma E ...
- C51语言支持哪些数据类型,C51编译器支持的数据类型(1)
1.1 C-51 编译器支持下列数据类型: 数 据 类 型 长 度 值 域 bit 1 字节 0 或 1 signed char 1 字节 -128-+127 unsigned char 1 字节 0 ...
- 单片机c51语言定义bool类型,C51单片机数据类型的具体定义及应用
描述 先来简单说说C语言的标识符和关键字.标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句.数据类型.函数.变量.数组等等.C语言是大小字敏感的一种高级语言,如果我们要定义一个定时器1,可 ...
- c51语言c100错误,KEIL C51错误的解决办法
有时候在编好一个程序之后,编译链接时,提示说有如下错误. 错误为 ..校长基金1TEXT1.C(56): error C100: unprintable character 0xA1 skipped ...
- c语言中预处理指令的作用,C语言中常用预处理指令
转载自 https://blog.csdn.net/farsight2009/article/details/58602886 姓名:张艳博 学号:17021223249 [嵌牛导读]: C语言中常用 ...
最新文章
- 现在无法开始异步操作。异步操作只能在异步处理程序或模块中开始,或在页生存期中的特定事件过程中开始...
- linux alias命令参数及用法详解--linux定义命令别名alias
- wordpress插件在服务器上的存储位置
- TPTP(Java Profiling Tools插件)对Java程序进行性能测试
- mysql复制模式有几种_MYSQL复制的几种模式
- 文献管理三剑客之noteexpress打不开 cannot find import; dll may be missing corrupt or worng
- 如何在VS中统计项目代码量
- 【重识云原生】第六章容器6.1.3节——Docker常用命令
- kali之搜狗输入法安装下载
- 自定义数据类型的指针的含义
- 禁用驱动数字签名验证
- Oracle VM VirtualBox 打开Ubuntu出现0x00000000指令引用的0x00000000内存,该内存不能为written的解决方案
- Android性能优化方案
- Python处理视频实现特效案例十二则
- 整理了46个python人工智能库,详细介绍(含资源),建议收藏
- 移动推送:灵活、高效、精准的App消息推送
- Color Constancy 色彩恒常性(1)White Patch Retinex
- npm,vue简易安装教程
- 管理者的角色修炼-第一课总结
- windows phone水平滑动翻页动画效果
热门文章
- 【Python】SyntaxError: Non-ASCII character '\xe8' in file
- Atitit 图像处理 halcon类库的使用 范例边缘检测 attilax总结
- atitit.基于bat cli的插件管理系统.doc
- atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
- paip.提升性能---C#.NET程序内存占用过多以及OutOfMemory解决方法
- 为企业发展赋能,让零散数据资源变为企业数据资产
- (转)JD-Quant量化交易平台设计:延迟latency
- (转)Rust语言2017年调查报告
- (转)查理·芒格:光靠已有的知识,你走不了多远
- (转)听赌徒谈风险:没犯任何错误照样输个精光