位运算基础:入门

神马是位运算?

 

   程序中的所有数在计算机中都是以二进制形式储存的,位运算就是对整数在内存中的二进制位进行直接的操作。 比如and是一个逻辑运算符,但整数和整数之间可以进行and运算,比如 6的二进制是 110, 11的二进制是1011,那么。6 and 11的结果就是2.

 

它在二进制中是这样表示的:

 

             110

and     1011

=========

           0010   -》 2

 

由于位运算直接对内存数据进行操作,不需转成十进制,所以处理速度非常快,这个快的用处有没有实际意义呢?我暂时还不知道,继续读下去。

 

C/C++中的位运算符号

 

 

 

 

  需要注意的是,逻辑运算与位运算是有很大区别的

 

 

 

and 和 or运算学过离散数学或者计算机组成原理的童鞋应该很容易理解,下面讲xor:

 

  xor运算,也就是 ^ 运算,通常对于二进制的特定一位进行取反操作,因为异或可以这样定义:0和1都不变,异或1则取反、

这个运算的你运算是它本身,也就是说两次异或同一个数之后结果不变

 

也就是 (a ^ b) ^ b = a

 

然后学习到这里

就可以看到一个很有趣的交换功能不需要用多一个变量 

a = a xor b;

b = a xor b;

a = a xor b;

 

用c/c++就可以这样表示了

 

 

 

 

然后是 ~ not运算,就是所有0或1进行取反  

下面是一个例子

a: 00010

~a:11101

 

用程序表示 


 

 

 

用不同的类型的数据所出来的结果都是不一样的,因为每种数据类型的长度都是不一样的

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值