编程基础知识
位运算
如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。
与运算(&)
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
用途:
-
清零。如果想将一个单元清零,即使其全部二进制位为 0,只要与一个各位都为零的数值相与,结果为零。
-
取一个数中指定位(方法:找一个数,对应 X 要取的位,该数的对应位为 1,其余位为零,此数与 X 进行“与运算”可以得到 X 中的指定位。)
1
2X=10101110
取X的低4位,用 X & 0000 1111 = 00001110 即可得到
注:负数按补码形式参加按位与运算。
或运算(|)
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
用途:
-
用来对一个数据的某些位置 1(找到一个数,对应 X 要置 1 的位,该数的对应位为 1,其余位为零。此数与 X 相或可使 X 中的某些位置 1)
1
将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到
异或运算(^)
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
用途:
-
使特定位翻转找一个数,对应 X 要翻转的各位,该数的对应位为 1,其余位为零,此数与 X 对应位异或即可。
1
X=10101110,使X低4位翻转,用X ^0000 1111 = 1010 0001即可得到
-
与 0 相异或,保留原值 ,X ^ 00000000 = 1010 1110
取反运算(~)
运算规则:~1=0; ~0=1;
1 | 使一个数的最低位为零,可以表示为:a&~1 |
左移运算(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补 0)
1 | a = a<<2将a的二进制位左移2位,右补0 |
注:若左移时舍弃的高位不包含 1,则每左移一位,相当于该数乘以 2。
右移运算(>>)
将一个数的各二进制位全部右移若干位,正数左补 0,负数左补 1,右边丢弃。
1 | a = a>>2 将a的二进制位右移2位 |
注:操作数每右移一位,相当于该数除以 2 X/2,左补 0 或 补 1 得看被移数是正还是负。
- 本文标题:编程基础知识
- 创建时间:2020-11-06 09:42:05
- 本文链接:2020/11/06/code-base/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论