易截截图软件、单文件、免安装、纯绿色、仅160KB

【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)进行异或运算。 异或运算简单讲就是相同就为假,不同


相关文档:

C/C++面试题


1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx
++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量的&l ......

VC++与Java

VC++与Java
Visual C++ 6.0是微软非常经典的调试工具,本人非常喜欢。不知不觉学了MFC,花了不少时间与银子,感觉MFC真的是博大精深,就像一种非常高深的武功,就像太极,入门难。java像武当。Visual C++需要比较深厚的内功才能修炼好,不过java学好了也不错,不管学哪个,最终的境界都是刚柔相济。武功如此,编程语言开发 ......

C 之杯

1.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
#include<stdio.h>
int f(int *);
int main()
{
int *p,a[10];
for(p=a;p<a+10;p++)
scanf("%d",p);
f(a);
for(p=a;p<a+10;p++)
printf("%d ",*p);
return 0;
}
int f(int *a)
{
int i,*p ......

浅谈C/C++内存泄漏及其检测工具

  对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号