嵌入式 寄存器某一位置位或清零
来源:互联网 发布:mac ctrl command 编辑:程序博客网 时间:2024/05/16 09:28
应用一:将寄存器中的某一位置1或则清0,保持其他位不变。
int
void SetBit(int pos)//将某一位置位的操作
{
}
void ClrBit(int pos)//将某一位清0的操作
{
}
说明:
该操作的依据如下:
1.0|1 == 1,1|1 ==1,故无论0还是1同1执行|操作,结果为1;无论0还是1同0执行|操作,都将保持不变。
2.1&0 == 0,0&0 ==0,故无论0还是1同0执行&操作,结果为0;无论0还是1同1执行&操作,都将保持不变。
应用二、判断寄存器某一位为0还是1
bool is1(int pos)//判断某一位是否为1
{
}
应用三、将寄存器的某一位取反(1->0;0->1)
void ReverseBit(int pos)//将某一位取反
{
}
说明:与0异或,保持不变;与1异或,取反。
应用四、保留2个数的不同部分,将它们合并为1个数
方法一:这两个数除了有效位之外,其他位均为0,可以将其先适当移位操作,然后在"|"运算。
例一:将temp中的低8位和t中的高4位组合成一个12位数
例二:保留channel的底4位,将其作为result的高4位,result的低4位设置为0xC;
方法二:如果这2个数除了有效位之外,其他位需要保留为1,方法是先与适当的数"|",之后2个数"&"
例一:保留temp的高4位和line的底4位,并将其组合成result。由于line的其他位全位1,所以必须先将temp的其他位全部设置为1,之后2个数"&"即可。
应用五、将一个16位数的高低8位分别拆成2个8位数,方法是通过多字节数赋给少字节数,多字节数高位字节部分将被自动截取的原理。
应用六、如果CPU没有来算数移位操作,如何用逻辑移位操作实现。
例如:line = 0xFE,如何实现其的左移操作后,右边补入的是1而不是默认的0。
- 嵌入式 寄存器某一位置位或清零
- 嵌入式 寄存器某一位置位或清零
- 寄存器某一位置位或者清零
- 【汇编ASM】寄存器指定位置清零
- 将整数的第n位清零或置1,其他位不变
- 将某一位置为一,将某一位不置为一,判断某一位是否为一
- 定义一个宏,实现对数据a的第n位置位、清零、取反
- 点击页面某一位置或区域,让当前页面定位到某一位置
- 位操作,置位,清零
- 从寄存器中指定位置取指定位数值
- 嵌入式编程基础----对寄存器的位操作
- 嵌入式寄存器操作-----C语言位操作的学习
- 嵌入式寄存器操作-----C语言位操作的学习
- 嵌入式开发中用于操作寄存器的位运算
- 将int型变量第3位 置1 或清零
- 二进制数某一位置0或置1
- 2.2.位与位或位异或在操作寄存器时的特殊作用
- 嵌入式C语言位运算之清位置位
- 嵌入式 hi3518cSDL_tff库做bmp实现osd
- 嵌入式 SDL进行图片的切割与移动
- 嵌入式 SDL显示文字
- 嵌入式 Linux下利用FreeType2的API实现字符的显示
- mysql installer 无法选择install path
- 嵌入式 寄存器某一位置位或清零
- 嵌入式 字符设备驱动编程
- 嵌入式 简单的helloword字符驱动
- 嵌入式 ssize_t与size_t的联系
- 嵌入式 字符驱动总结makefile和gcc编译驱动
- 嵌入式 编译简单驱动程序的几种makefile
- 嵌入式 linux驱动模块编译(初学者)
- 嵌入式 字符设备驱动程序
- 嵌入式字 符设备驱动程序demo