Evo. G Tech Team Forum
Welcome to Evo. G Tech Team Forum. We have moved to a new website : www.evogtechteam.com

Thanks you.

by Evo. G Tech Team Management.

位运算

View previous topic View next topic Go down

位运算

Post by too wei on December 12th 2015, 20:22

位运算中有好几种,其中包括
1.逻辑左移
2.逻辑右移
3.与运算(&)
4.或运算(|)
5.异或运算(^)

1.逻辑左移
在二进制的右边加上n个0,左边溢出的拿掉
比如
int x = 60
x = x<<2;  //逻辑左移2个位,(其实答案出来就是x * 2^2)

60的二进制是 0011 1100 ,在右边加上2个0,左边溢出的拿掉
001111 0000
                 --- 
加2个0,然后把左边多出来的2个0拿掉
结果出来是
1111 0000
这时换去2进制就是240,相等于60 * 2^2


2.逻辑右移
在二进制的左边加上n个0,右边溢出的拿掉
比如
int x = 60
x = x>>2;  //逻辑右移2个位,(其实答案出来就是x / 2^2)

60的二进制是 0011 1100 ,在左边加上2个0,右边溢出的拿掉
0000 111100
---        
加2个0,然后把右边多出来的2个0拿掉
结果出来是
0000 1111
这时换去2进制就是15,相等于60/2^2


3.与运算 ' & ' 操作符
c = a & b;

a = 1 0 1 1 0 0 1 //a 和 b都是1就是1
b = 0 0 1 1 0 1 0
-----------------
c = 0 0 1 1 0 0 0
 
4.或运算 ‘ | ’ 操作符
c = a | b;

把2个 二进制号码 合起来变成一个二进制号码
a = 0 1 0 0 1 1 0 //只要a或b中有一个是1(true), 结果出来就会是1
b = 1 1 0 0 0 1 0
-----------------
c = 1 1 0 0 1 1 0


5.异或运算 ' ^ '操作符

c = a ^ b

把2个 二进制号码 合起来变成一个二进制号码
a = 1 1 0 1 0 1 0 //a 和 b 一样的话就是0,不一样就是1
b = 0 1 0 0 1 1 0
------------------
c = 1 0 0 1 1 0 0

too wei
Sponsor
Sponsor

Posts : 31
Points : 17831
Reputation : 0
Join date : 2015-04-21
Age : 19
Location : Johor

View user profile

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum