【C\C++语言入门篇】 位运算
回顾之前的篇幅,C语言的主体部分基本已经介绍完了。之所以没有介绍C++的相关特性是因为在之前的文章中C和C++在这些方面都有共性,所以在面向对象之前。我们先把这些共性给介绍完。也就是说在介绍面向对象之前,所有的文章都是CC++中都能使用的。从这点上来看,现在正极力奋斗于C++战线上的初学者还是很有用处的。
本篇继续沿着这条路线,到本篇为止包括本篇都还不会急于去介绍C++的面向对象的特性。那么在之前的文章中,可以说基本都把内容给介绍完了。本篇虽然不是大概念,但是在实际的项目中是绝对离不开的。那么我们就在本篇开始我们的位运算旅程。
首先,位运算到底用来做什么,用处多不,好像到现在我也没有怎么用位运算呢?很多初学者我相信会有这样的疑问。那么本篇就将介绍位运算的强大用途及无限魅力。
位运算跟二进制联系非常紧密,二进制这个概念相信大家都不陌生,我们的位运算也就是在这些0或1上进行操作。不要说二进制你都不知道。比如:
7的8位二进制为: 0000 0111
7的32位二进制为: 0000 0000 0000 0000 0000 0000 0000 0111
二进制与十进制的换算我就不说了。上面为什么三个1就表示7,不知道的话就看看书哈。
上面说到了8位和32位,我们知道一个字节(byte)表示8位,那么二进制的一位就是这个位的意思。int是32位,那么写完整数字0的二进制就有32个0。这样思考起来在后面的位运算上要好理解一点。
先来看看我们经常用到的位运算符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、<< (按位左移)。
& ( 按位与): 概念上来讲就是二进制上按每一位(0或1)进行与运算。那么与运算是什么意思该不用我说吧,就是两者都是1结果为真。其中一个为0结果为假。这里不可能有0、1之外的数,这里是二进制。先看一个8位二进制的例子:
7 & 8 = 0000 0 111 & 0000 1000 = 0000 0000 = 0
7 & 3 = 0000 0111 & 0000 0011 = 0000 0011 = 3
很简单吧。不用多说了,就是操作0和1。
| ( 按位或): 概念上来讲就是二进制上按每一位(0或1)进行或运算。那么或运算是什么意思该不用我说吧,就是两者都是0结果为假。其它情况都为真。
7 | 8 = 0000 0 111 | 0000 1000 = 0000 1111 = 15
7 | 3 = 0000 0111 | 0000 0011 = 0000 0111 = 7
^( 按位异或): 概念上来讲就是二进制上按每一位(0或1)进行异或运算。 异或运算简单讲就是相同就为假,不同
相关文档:
/*
* test.cpp
*
* Created on: 2010-5-13
* Author: Sarah
*/
#include "/usr/include/mysql/mysql.h" /*为绝对路径*/
#include <stdio.h>
#include <stdlib.h>
#i ......
(转)C/C++中的日期和时间 time_t与struct tm转换
摘要:
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标 ......
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx
++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量的&l ......
GPIO(General Purpose Input/Output的缩写)就是芯片的引脚,引脚是可编程的可对引脚的工作模式进行设置:输入模式(检测输入信号),输出模式(输出0或1),高阻状态(常用于AD转换),还有禁止或允许上内部下拉电阻(上拉:管脚通过电阻接高电平,下拉:管脚通过电阻接地,也可以外部接上拉或下拉电阻),还有管脚复用等功能, ......