C语言中常见的置位操作

来源:本站
导读:目前正在解读《C语言中常见的置位操作》的相关信息,《C语言中常见的置位操作》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言中常见的置位操作》的详细说明。
简介:本文介绍了3种C语言中将某一位置位的简便方法。

如何对某一位置0或者置1?

方法一:

写成宏,方便移植

#define setbit(x,y) x|=(1<<y) //将X的第Y位置1

#define clrbit(x,y) x&=~(1<<y) //将X的第Y位清0

方法二:

C语言位运算除了可以提高运算效率外,在嵌入式系统的编程中,它的另一个最典型的应用,而且十分广泛地正在被使用着的是位间的与(&)、或(|)、非(~)操作,这跟嵌入式系统的编程特点有很大关系。我们通常要对硬件寄存器进行位设置

譬如,我们通过将AM186ER型80186处理器的中断屏蔽控制寄存器的

第低6位设置为0(开中断2),最通用的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

outword(INT_MASK, wTemp &~INT_I2_MASK);

而将该位设置为1的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

outword(INT_MASK, wTemp | INT_I2_MASK);

判断该位是否为1的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

if(wTemp & INT_I2_MASK)

{

… /* 该位为1 */

}

方法三:

int a|=(1<<x) //X就是某位需要置1的数字,如第四位置1为: a|=(1<<4)

int b&=~(1<<x) //把某位置0

x=x|0x0100 //把第三位置1

x=x&0x1011 //把第三位置0

#define BitGet(Number,pos) ((Number) >> (pos)&1)) //用宏得到某数的某位

#define BitGet(Number,pos) ((Number) |= 1<<(pos)) //把某位置1

#define BitGet(Number,pos) ((Number) &= ~(1<<(pos)) //把某位置0

#define BitGet(Number,pos) ((Number) ^= 1<<(pos)) //把Number的POS位取反

典型操作有:

WTCON |= (1 << 5) //WTCON的第五位清1

WTCON &= ~(1 << 5) //WTCON的第五位清0

上述方法在嵌入式系统的编程中是非常常见的,我们需要牢固掌握。

提醒:《C语言中常见的置位操作》最后刷新时间 2024-03-14 01:03:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言中常见的置位操作》该内容的真实性请自行鉴别。