位操作符介绍

参考文章
C++:位操作基础篇之位操作全面总结

0X01位操作基础

基本的位操作符有与、或、异或、取反、左移、右移这6种,它们的运算规则如下所示:

符号 描述 运算规则 by MoreWindows
& 两个位都为1时,结果才为1
| 两个位都为0时,结果才为0
^ 异或 两个位相同为0,相异为1
~ 取反 0变1,1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

注意以下几点:

1. 在这6种操作符,只有~取反是单目操作符,其它5种都是双目操作符。

2. 位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。

3. 对于移位操作,在微软的VC6.0和VS2008编译器都是采取算术称位即算术移位操作,算术移位是相对于逻辑移位,它们在右移操作中都一样,低位补0即可,但在左移中逻辑移位的高位补0而算术移位的高位是补符号位。如下面代码会输出-4和3。


0X02位操作实现两个数交换
        static void Main(string[] args)
        {
            int a = 3;
            int b = 4;
            swap(ref a, ref b);
            Console.WriteLine(a + "    " + b);
        }

        static void swap(ref int a,ref int b)
        {
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
        }

猜你喜欢

转载自blog.csdn.net/codingriver/article/details/82971805
今日推荐