222 字
1 分钟
位操作符(&、|、^) C语言
2023-09-04

操作符(一)#

对于整形来说:数据存放内存中其实存放的是补码。#

& 按位与#

‘’&”是将两个数的二进制补码进行比较,若补码中的对位都为“1”则位“1”,反之为”0
代码如下:

int main()
{
int num1 = 19;
int num2 = 6;
int ret = num1 & num2;
// 19 -->00000000000000000000000000010011
// 6 -->00000000000000000000000000000110
//ret -->00000000000000000000000000000010 -->2
printf("%d\n", ret);
//打印ret
for (int i = 31; i >=0; i--)
{
printf("%d", (ret >> i) % 2);
}
//打印ret二进制
return 0;
}

&“牢记有 0 则 0

| 按位或#

‘’|”是将两个数的二进制补码进行比较,若补码中的对位都为“0”则位“0”,反之为”1
这恰好与”&“相仿
代码如下:

int main()
{
int num1 = 19;
int num2 = 6;
int ret = num1 | num2;
// 19 -->00000000000000000000000000010011
// 6 -->00000000000000000000000000000110
//ret -->00000000000000000000000000010111 -->23
printf("%d\n", ret);
//打印ret
for (int i = 31; i >=0; i--)
{
printf("%d", (ret >> i) % 2);
}
//打印ret二进制,以验证
return 0;
}

|“牢记有 1 则 1

^ 按位异或#

‘’^”是将两个数的二进制补码进行比较,若补码中的对位相同则位“0”,反之为“1
代码如下:

int main()
{
int num1 = 19;
int num2 = 6;
int ret = num1 ^ num2;
// 19 -->00000000000000000000000000010011
// 6 -->00000000000000000000000000000110
//ret -->00000000000000000000000000010101 -->21
printf("%d\n", ret);
//打印ret
for (int i = 31; i >=0; i--)
{
printf("%d", (ret >> i) % 2);
}
//打印ret二进制,以验证
return 0;
}

^“牢记相同为”0”,不同为”1”

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

位操作符(&、|、^) C语言
https://blog.csdn.net/GenshiN__IMPACt_/article/details/132677687
作者
zhiang
发布于
2023-09-04
许可协议
CC BY-SA 4.0

部分信息可能已经过时

目录