本文主要是介绍与、或、异或运算,以及常用运算(二进制赋值、取值、左移、右移、求余数、向上取整、向下取整),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
与、或、异或运算
1.与运算(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
例如:9&5 即 0000 1001 (9的二进制补码)&00000101 (5的二进制补码) =00000001 (1的二进制补码)可见9&5=1。
2.或运算(|)
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。
例如:9|5可写算式如下: 00001001|00000101 =00001101 (十进制为13)可见9|5=13
3.异或运算(^)
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
例如:9^5可写成算式如下: 00001001^00000101=00001100 (十进制为12)可见9^5=12
常用运算:(二进制赋值、取值、左移、右移、求余数、向上取整、向下取整)
1.赋值1 -> 或运算(|)
例如:40 | (1<<1) = 420010 1000| 0000 0010 ------------------0010 1010
2.赋值0 -> 与非运算(&~)
例如: 42 & ~(1<<1) = 400010 1010 & ~0000 0010 ==》0010 1010 & 1111 1110
--------------- 0010 1000
3.取值 -> 与运算(&)
例如:42 & 1<<1 = 20010 1010 & 0000 0010 -----------------0000 0010
4.乘以2 -> 左移一位( << 1)
例如:43 * 2 = 43 << 1 = 860010 1011 >> 0101 0110 = 86
5.除以2 -> 右移一位( >> 1)
例如:43 / 2 = 43 >> 10010 1011 >> 0001 0101 = 21
6.除以2求余数 -> 与1( &1)
例如:43 % 2 = 43 & 1 = 10010 1011& 0000 0001--------------- 0000 0001
7.向上取整
int a , int b => (a + b - 1) / b 比如:a = 8, b = 3 => 2; a = 9, b = 3 => 3; a = 10, b = 3 => 4;
8.向下取整
int a , int b => a / b
这篇关于与、或、异或运算,以及常用运算(二进制赋值、取值、左移、右移、求余数、向上取整、向下取整)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!