C++中的位运算符

yizhizouABC 2014-01-24

等级考试要考C++,我平时得留心着点儿,经常总结一下,会有好处吧,先总结一下C++中的运算符。

在我们学习的VB编程语言中运算符都包含了那么几类:算术运算符、逻辑运算符、关系运算符、赋值运算符等。

这算是C++与其的共性吧。当然作为一门独立的语言,它也会有专门属于自己的运算符。或者说目前我认为,这个是我新接触到的一些运算符(其他的编程语言没怎么接触过)。

1、位运算符

一种二进制运算符,分为移位运算和按位运算。

此运算符,在操作时,要先将操作数按二进制形式逐位进行逻辑运算和操作。

1.例如:

unsigned char c(135)二进制表示为10000111

对于取反(~):即将原来的0变为1,把原来的1变为0,最后为01111000,即为十进制中的120

2、左移<<:是操作数向左移动其右操作数所指定的位数,移出位补0

unsigned char d(43)  d<<1

43的二进制表示为:00101011,统一将数字向左移动一位,为01010110,即十进制的86

根据这种原理,其实每当左移一位时,结果为操作数*2,移两位,操作数*4。。。依次为操作数*2^n

同理,右移为除法

3.异或运算,我个人认为这个还是有点儿难理解的。规则为;"同则为0,异则为1"

个人观点:异或,只有不相同的才能称之为“异或”,那么相同则不符合条件,这里1代表true,0代表false,那么只有几个同时满足某个条件时,此时,不符合异或的条件,那么结果为0.若两个数中只有一个或几个而不是全部,那么结果为1.

以上,是C++中关于位运算符的一些收获,此外,在使用位运算符时,还应注意优先级问题和溢出问题。

优先级;  2、位求反 (~)

6、左移(<<)、右移(>>)

9、位于(&):其实就是且运算

10、异或(^)

11、位或(|):或运算

相关推荐