利用数学知识快速理解按位与& 按位或| 按位异或^ 按位取反~

#include <stdio.h>

int main()
{
	int Test0 = 1;	//二进制0001
	int Test1 = 2;	//二进制0010

	//先来看按位与,直接理解为数学里面的两个集合求交集
	//由于Test0和Test1二进制每个位没有交集则结果为0
	printf( "%d\n", Test0 & Test1);

	//按位或,理解为数学里面的两个集合求并集
	//由于Test0和Test1二进制存在不同的二进制位则都保留结果为0011为3
	printf( "%d\n", Test0 | Test1);

	//按位异或,理解为数学里面两个集合求交集之外的并集
	//由于Test0和Test二进制没有相同的位没有交集则直接为求并集结果为3
	//如果是13 ^ 6 = 1101 ^ 0110 忽略交集部分为1001 | 0010结果为1011十进制为11
	printf( "%d\n", Test0 ^ Test1 );

	//按位反,理解为数学求一个集合的补集
	//Test0为int32位则二进制为0000 0000 0000 0000 0000 0000 0000 0001
	//则Test0的二进制补集为:1111 1111 1111 1111 1111 1111 1111 1110则十进制结果为-2(负数使用补码表示)(无符号int则为0xFFFFFFFF - 1)
	printf( "%d\n", ~Test0 );
	return 0;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值