第1章:5位计算
&:按位与 |:按位或 ^:按位异或 ~:取反 >:右移
1.按位与运算“&”(位乘法)
(1)运算规则:当参与运算的两个二进制位皆是1时,结果为1,否则为0
例:4&5
结果为4
#include<stdio.h>
main()
{
int x = 4;
int y =5;
printf("x & y = %d\n",x&y);
return 0;
}
2.按位或运算“|”
两个二进制有一个1,结果为1,两个0结果才为0
例:将八进制数21与八进制70进行按位或,结果为八进制数
结果为71
#include<stdio.h>
main()
{
int x = 021;
int y = 070;
printf("x | y = %o\n",x|y);
return 0;
}
3.按位异或运算“^”
参加运算的两个二进制为不同则为1,相同则为0
例:071^052=?
?=023
#include <stdio.h>
main()
{
int x = 071;
int y = 052;
printf("x ^ y = %03o\n", x^y);
return 0;
}
4.按位取反运算“~” 【单目运算符】
是对二进制数按位取反(即1变0,0变1)该运算符优先级比算数、逻辑、其他运算符都高 注:计算~x|y时,应先求~x
5.移位计算(大多学校不考)
(1)左移运算符"<<"
用来将一个数的各二进制左移若干位,移动的位数有表达式2(非负)指定,其右边空出的位用0填补,高位左移溢出则会舍弃该高位
注:左移1位相当于该数乘以2,左移2位相当于该数乘以$2^{2}=4$,例:12<<2=48,即乘以4(只适用于该数左移时被溢出舍弃的高位中不含1的情况)
(2)右移运算符">"
移动的位数由表达式2(必须非负)指定,移到右端的低位被舍弃
注:1.对无符号数,高位补0
2.对有符号数两种情况,一是用符号位填补(称为算术移位)二是用0填补(称为逻辑移位,也称简单移位)