c语言 个位,如何才能给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能。

9ffd754d023cec6fe080e5da8e4fd0a1.png

#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));

}

以上是以TC为例编写的主程序,各函数在其它C语言中也一样可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hsrp 切换_HSRP、VRRP、GLBP | 网络工程师之网关高可用、冗余

在RS的学习过程中我们接触到很多网络技术,后面就把工作中常用的拿来与大家分享,本次我们来分享网关冗余技术。当我们的网关设备无法使用堆叠(VSS,istack,IRF),或者不同厂商设备的时候,非常有效,能够提供网关…

Linux文件系统详解

从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.htmlhttp://www.iteye.com/topic/816268http://soft.chinabyte.co…

opencv机器学习线性回归_机器学习(线性回归(二))

Lasso与岭回归的同和异Lasso、岭回归都可以预防模型过拟合Lasso回归惩罚项为L1正则,岭回归为L2正则Lasso回归可用来特征选择,岭回归则不能Lasso回归用坐标下降法求解,岭回归用梯度下降法求解。为什么Lasso可用于特征选择,而岭回归…

c语言int a什么意思,问一下吧里大神 int a = a; 这么定义是什么意思?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼使用自身初始化,具有indeterminate value,可能是trap representation导致使用这个对象的值引起undefined behavior。但这个初始化语法上是正确的,也没有语义错误。ISO C113.19.21 indeterminate …

把EXCEL用程序导入到ORACLE中(SpringMVC+MyBatis)

前提&#xff1a;项目中需要把EXCEL数据批量导入oracle中两张表中。如是用到了poi技术。分别导入poi-3.11-beta2.jar和poi-ooxml-schemas-3.9.jar这两个包。EXCEL数据如下 第一步&#xff1a;修改spring框架配置文件。 springmvc-servlet.xml加上&#xff1a; <!-- 文件上传…

access实例_西门子PLC1200组态王跟Access数据库-⑥组态王变量

西门子PLC1200&#xff0c;组态王跟Access数据库--⑥组态王变量组态王的变量设置1.0 变量设置如下图所示&#xff0c;选择数据词典&#xff0c;里面是系统变量跟新建的变量&#xff0c;选择新建1.1 如下图&#xff0c;从上往下依次&#xff0c;变量名(这个应该知道)&#xff0c…

Android 撸起袖子,自己封装 DialogFragment

前言 具体的代码以及示例我都放上 Github 了&#xff0c;有需要的朋友可以去看一下 DialogFragmentDemos&#xff0c;欢迎 star 和 fork. 本文的主要内容 DialogFragment 是什么创建通用的 CommonDialogFragment实现各种类型的 DialogFragment在写正文之前&#xff0c;先来一波…

as模拟器文件夹路径_EGG Switch手机模拟器怎么用?中文教程来了......

大家好&#xff0c;小鸡妹我又来啦。自从昨天曝光了美国NX工作室的EGG模拟器之后&#xff0c;推文底下就多了一千多条留言&#xff0c;说啥的都有。不过小鸡妹大概总结了一下&#xff0c;发现下面这几条问题&#xff0c;出现的频率最高&#xff1a;① 找不到网址&#xff1b;②…

xml文件c语言读取函数,读写xml文件的2个小函数

#region 读写xml文件的2个小函数&#xff0c;2005 4 2 by hycpublic void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径文件名&#xff0c;AppKey是 Key Name&#xff0c;AppValue是Value{XmlDocument xDoc new XmlDocument();xDoc.L…

Java导入导出Excel工具类ExcelUtil

前段时间做的分布式集成平台项目中&#xff0c;许多模块都用到了导入导出Excel的功能&#xff0c;于是决定封装一个ExcelUtil类&#xff0c;专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA&#xff08;底层用hibernate实现&#xff09;&#xff0c;所以导入和导出也…

郁金香汇编代码注入怎么写看雪_世界黑客编程大赛冠军的汇编代码 你见过吗?...

前几天发布了一篇“雷军22年前写的汇编代码”的文章&#xff0c;引起网友的热议。有人说汇编是最牛逼的编程语言&#xff0c;没有之一。汇编语言确实厉害&#xff0c;不知道你有没有见过世界黑客编程大赛冠军的作品?雷军编写的的汇编代码有 网友分享了97年Mekka ’97 4K Intro…

变位齿轮重合度计算公式_齿轮“模数”是如何计算的?

模数是决定齿轮大小的因素。齿轮模数被定义为模数制轮齿的一个基本参数&#xff0c;是人为抽象出来用以度量轮齿规模的数。目的是标准化齿轮刀具&#xff0c;减少成本。直齿、斜齿和圆锥齿齿轮的模数皆可参考标准模数系列表。工业定义&#xff1a;齿轮的分度圆是设计、计算齿轮…

c语言改错和填空能运行吗,C语言改错填空编程

改错题1、在考生文件夹下&#xff0c;给定程序MODI.C的功能是&#xff1a;从低位开始取出长整型变量s中奇数位上的数&#xff0c;依次构成一个新数放在t中。例如&#xff0c;当s中的数为&#xff1a;7654321时&#xff0c;t中的数为&#xff1a;7531。请修改并运行该程序&#…

@Autowired注解实现原理

在讨论代码细节之前&#xff0c;我们再来了解下基础知识。Spring管理可用于整个应用程序的Java对象bean。他们所在的Spring容器&#xff0c;被称为应用程序上下文。这意味着我们不需要处理他们的生命周期(初始化&#xff0c;销毁)。该任务由此容器来完成。另外&#xff0c;该上…

获取freemarker处理后的内容

相信很多人都用过freemarker&#xff0c;或做视图&#xff0c;或模板&#xff0c;或生成静态文件等,但是有多少人做过这样的应用&#xff0c;通过模板后&#xff0c;不是要输出静态的内容&#xff0c;而是直接在代码中获取处理模板后的内容&#xff0c;研究了下API,freemarker里…

c4.5算法python实现_算法:用Python实现—最优化算法

今天给大家分享一下算法&#xff0c;用python来实现最优化算法。废话不多说&#xff0c;直接上代码&#xff1a;一、二分法函数详见rres&#xff0c;此代码使该算法运行了两次def asdf(x): rres8*x**3-2*x**2-7*x3 return rresi2left0right1while i>0 : i i-1 …

comsol临时文件夹中有不支持的字符_文件名中不能包含的字符

文件名是为了方便人们区分计算机中的不同文件&#xff0c;而给每个文件设定一个指定的名称。由文件主名和扩展名组成。DOS操作系统规定文件名由文件主名和扩展名组成&#xff0c;文件主名由1~8个字符组成&#xff0c;扩展名由1~3个字符组成&#xff0c;主名和扩展名之间由一个小…

linux 星号 通配符,如何在bash中转义通配符/星号字符?

简短的回答像其他人所说的那样 - 你应该总是引用变量来防止奇怪的行为。所以使用echo“$ foo”代替echo $ foo。长期回答我确实认为这个例子值得进一步解释&#xff0c;因为它的表面看起来比它看起来更多。我可以看到你的困惑在哪里&#xff0c;因为在你运行你的第一个例子后&a…

PYTHON面试

大部分的面试问题&#xff0c;有最近要找事的老铁吗&#xff1f;python语法以及其他基础部分可变与不可变类型&#xff1b; 浅拷贝与深拷贝的实现方式、区别&#xff1b;deepcopy如果你来设计&#xff0c;如何实现&#xff1b; __new__() 与 __init__()的区别&#xff1b; 你知…

vs怎么更改编译的堆空间_再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度...

前言长期以来困扰我们的一个问题就是构建速度&#xff0c;AndroidStudio 的构建速度严重影响 Android 开发者的工作效率&#xff0c;尤其是更新一个版本号&#xff0c;导致整个项目重新构建&#xff0c;在网络慢的情况下&#xff0c;这是无法忍受的。buildSrc 这种方式&#xf…