C语言---位运算符的分类与用法(按位与&、按位或 |、按位异或^、按位取反~、左移<<、右移>>)

目录

位运算

        1、位运算符

        2、各类运算符的用法

        (1) 按位与(&)

        (2) 按位或( | )

        (3) 按位异或( ^ )

        (4) 按位取反( ~ )

        (5) 左移 (<<)

        (6) 右移(>>)


位运算

        1、位运算符

        位运算符被用来根据缘由改变引脚高低状态,从而引起外部变化。运算符包含以下几种:

         *均要求操作数必须是整型或与整型相兼容的数据类型。

        2、各类运算符的用法

        (1) 按位与(&)

        概念:按位与(&)用来进行指定位清零操作,即其余位状态不变,指定位清零。是一种双目运算符,需要两个操作数。

        使用规则:两个都是 1 结果才是 1。

eg1. 对 2 和 6 进行按位与操作 (2 的二进制为:0000 0010 ;6 的二进制为:0000 0110),结果为 2 (0000 0010)

int main(void)
{
    int i = 2;
    int j = 6;
    printf("%d\n", i & j);
}

eg2. 对 0xAA 和 0xEF 进行按位与操作  (0xFF:1111 1111 ;  0xEF:1110 1111),结果为 0xEF(1110 1111)

int main(void)
{
	unsigned char P2 = 0xFF;
	P2 &= 0xEF;
    printf("%X\n", p2);
	return 0;
}

        (2) 按位或( | )

        概念:按位或( | )用来进行指定位置 1 操作。是一种双目运算符,需要两个操作数。

        使用规则:有一个为 1 结果就是 1。

eg. 对 0xAA 和 0x48 进行按位或操作  (0xAA:1010 1010 ; 0x48:0100 1000),结果为 0xEA(1110 1010)

int main(void)
{
	unsigned char P2 = 0xAA;
	P2 |= 0x48;

	return 0;
}

        (3) 按位异或( ^ )

        概念:按位异或( ^ )用来进行指定位翻转操作。是一种双目运算符,需要两个操作数。

        使用要求:不同为1,相同为0。

eg. 对 0x0A 和 0x0D 进行异或操作  (0x0A:0000 1010;  0x0D:0000 0111),结果为 0x07(0000 0111)

int main(void)
{
	unsigned char P2 = 0x0A;
	P2 ^= 0x0D;
    printf("%X\n", p2);
	return 0;
}

        (4) 按位取反( ~ )

        概念:按位取反( ~ )用来进行全翻转操作。是一种单目运算符,只需要一个操作数。

        使用规则:是 1 取0,是 0 取1。

        (5) 左移 (<<)

         概念:左移(<<)用来进行指定位左移操作。是一种双目运算符,需要两个操作数。

         使用规则:在末尾补0 。

 eg. 对 0xFFFFFFFF 进行左移 2 的操作

int main(void)
{
	int i = 0xFFFFFFFF;
	i <<= 2;
	printf("%X\n", i);

	return 0;
}
0xFFFFFFFF: 1111 1111 1111 1111 1111 1111 1111 1111
左移2            : 11 1111 1111 1111 1111 1111 1111 1100
 在末尾进行补零操作

        (6) 右移(>>)

         概念:右移(>>)用来进行指定位左移操作。是一种双目运算符,需要两个操作数。

eg. 下列代码输出结果为 0xDF

int main(void)
{
	unsigned char P0 = 0xFF;
	P0 &= ~((1 << 3) | (1 << 5));
	printf("%X\n", P0);

	return 0;
}

【END】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值