C语言高效位操作
思考:
1、 如何将一个数据中的多个不连续位清位?
1、 如何将一个数据中的多个不连续位置位?
1、 如何反转一个数据中的多个不连续位(1->0, 0->1)?
基础知识:C 语言位操作
/***********位与***********/
/************************/
& = ;
& = ;
& = ;
& = ; /***********位或***********/
/************************/
| = ;
| = ;
| = ;
| = ; /***********异或***********/
/************************/
^ = ;
^ = ;
^ = ;
^ = ; /***********位取反***********/
/************************/
~ = ;
~ = ;
置位(将某一位置为1):用1 与 该位进行 或 | 运算即可置位 --> x | 1 = 1;清位(将某一位置为0):用 0 与 该位进行 与& 运算即可清位--> x & 0 = 0;
取反 (将某一位求反): 用 1 与 该位进行 异或 ^ 运算即可取反 --> X ^ 1 = ~X;
例如:
int var = 0xFFEC2468;
1 、将var中的第3、 15、 16、 22位清位.
var &= ~( (0x1 << 2) | (0x1 << 14) | (0x1 << 15) | (0x1 << 21) );
2、 将var中的第1、14 、 17、 28位置位.
var |= ( (0x1 | (0x1 << 13) | (0x1 << 16) | (0x1 << 27) );
3、 将var中的第2、 9、 11、 29位取反。
任何位与1进行异或可取反, 任何位与0进行异或则可保持不变。
var ^= ( (0x1 << 1) | (0x1 << 8) | (0x1 << 10) | (0x1 << 28) );
C语言高效位操作的更多相关文章
- [收藏转贴]struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招
一.C/C++语言 struct深层探索 1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int.long.float等)的变量,也可以是一些复合数据类型(如 arr ...
- 【C/C++】struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招
本文为笔者阅读<嵌入式C精华>的摘录,推荐一下,不错的书 一.C/C++语言 struct深层探索 1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int ...
- 2015/12/24:嵌入式C语言的位操作随笔
今晚是平安夜,首先祝大家平安夜快乐,明天是圣诞,祝大家圣诞快乐!! 好了,这周都特别有空,上班也非常轻松,基本就是看看内核驱动,学学安卓,没什么正事的开发活干.今晚,我们来总结一例在现实 ...
- 单片机的C语言中位操作用法2
单片机的C语言中位操作用法 在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大 的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点. 这也 ...
- C语言高效编程的几招(绝对实用,绝对经典)
编写高效简洁的C语言代码,是许多软件工程师追求的目标.废话不说,走起! 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题 eg.字符串的 ...
- C 语言高效编程的几招——A few action of efficient C language programming
编写高效简洁的C 语言代码,是许多软件工程师追求的目标.本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教. 第1 招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个 ...
- C语言高效编程的几招,你会了几招了?
编写高效简洁的C 语言代码,是许多软件工程师追求的目标.本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教. 第1 招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个 ...
- C 语言高效编程与代码优化
译文链接:http://www.codeceo.com/article/c-high-performance-coding.html英文原文:Writing Efficient C and C Cod ...
- 单片机的C语言中位操作用法
在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点.这也是在各个领域中都可以看到C的重要 ...
随机推荐
- BufferedReader 输出与BufferedWriter 输入的用法
public static void main(String[] args) { String content[] = {"好久不见了","最近好吗",&qu ...
- swift新特性(__nullable和__nonnull
http://www.mamicode.com/info-detail-923593.html 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是 ...
- 【iScroll源码学习01】准备阶段 - 叶小钗
[iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文 http://www.cnblogs.com/yexiaochai/p/3 ...
- C++中string类的使用方法
如果所比较的两个string 相等,则返回0: 操作string 大于参数string,返回 正数:操作string 小于参数string,返回负数. (1) 比较操作string 与 _Str 或C ...
- STM32的优先级NVIC_PriorityGroupConfig
关于STM32的中断优先级 1.STM32中每一个中断都有一个专门的寄存器,(Interrupt Priority Register),来描述该中断的占先式优先级和副优先级,在这个寄存器中STM32使 ...
- jQuery API 中文文档
Reference: http://www.css88.com/jqapi-1.9/jQuery.proxy/
- Apache Bench安装与使用
一.Apache Bench简介 ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab.ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并 ...
- HTML CSS基础(三)
3种列表:有序列表.无序列表和定义列表 表1 3种列表记忆 标签 语义 说明 ol ordered list 有序列表 ul unordered list 无序列表 dl definition lis ...
- thinkPHP的学习
1.版本,以3.1为主,因为手册是基于这个的,最新的版本,还没有对应的手册 2.发现一个问题,echo 中文时,出现乱码,而调用模版则正常. 3.写url的注意大小写.index和Index是不同的 ...
- 【WebStorm】前端工具开发利器webstrom专篇...更新中
http://my.oschina.net/maomi/blog/137807#OSC_h2_5 WebStorm混搭svn WebStorm混搭nodeJS webstorm简单介绍 webstor ...