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的重要 ...
随机推荐
- 51nod1138(math)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1138 题意:中文题诶- 思路:假设 x=a1+(a1+1)+ ...
- Android系统属性SystemProperties分析
下面这几个博客总结的不错,有空看下: http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html http://blog.csdn.n ...
- linux devel包 和 非devel包的区别
devel 包主要是供开发用,至少包括以下2个东西: 1. 头文件 2. 链接库 有的还含有开发文档或演示代码. 以 glib 和 glib-devel 为例: 如果你安装基于 glib 开发的程序, ...
- CodeForces 626B Cards
瞎搞题...凭直觉+猜测写了一发,居然AC了.. #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- (一)Javascript基础知识
一,五种基本数据类型和一种复合数据类型. 五种基本数据类型 1,undefined 2,null 3,string 4,number 5,boolean 6,复合数据类型(Object,Array,D ...
- FZU 1397 保送
网络流入门题. 源点到每一个学生连一条边,容量为1 每个学校到汇点连一条边,容量为L 符合要求的学生和学校之间连边,容量为1. 从源点到汇点的最大流就是答案. #include<cstdio&g ...
- 【转】50条大牛C++编程开发学习建议
每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...
- usb开发
usb开发 USB HID报告及报告描述符简介 LibUSB通过SetReport()请求与USBHID设备通信 libusb开发者指南 USB枚举和HID枚举实例 USB命令 BusHound数据分 ...
- 【转载】Eclipse 断点调试
作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今年才写了此篇博文.关于Java调试技术还有很多,如Jav ...
- Java 之 HTML
1.HTML a.定义:HTML指的是超文本标记语言 b.特点:HTML不是一种编程语言,而是一种标记语言 标记语言是一套标记标签 HTML使用标记标签来描述网页 c.HTML标签:①通常标签是成对出 ...