位运算符的计算

本文深入探讨了位运算符的使用,包括按位取反(~)、按位与(&)、按位或(|)、按位异或(^)以及左右移位(>>、<<)。通过实例展示了这些运算符如何在二进制层面进行操作,并解释了它们在计算机科学和编程中的应用。了解这些概念对于提升编程技能和理解底层计算至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位运算符的计算

按位取反“~”

将怨偶的数据转化为二进制,按照最小单位byte补足为8位后,输出其补码所对应的数据。

~5==~000000101==11111010==-6(补码加1==反码 即为源数据*(-1))

按位与“&”

a&b //将a和b的值转化为二进制,按照最小单位byte补足为8位后,上下对应,保留重合的“1”位

将保留后的值重新换算为十进制。

举例

int a=3,b=5;
printf("%d",a&b);

a=00000011(2)
b=00000101(2)
=>00000001(2)==a&b

仅仅保留了重合的位(取交集)
最后输出的值是1

按位或“|”,按位异或“^”

a|b将a和b的值转化为二进制,按照最小单位byte补足为8位后,上下对应保留所有的“1”(取并集)

例如

int a=15,b=32;
pritnf("%d",a|b);

a==15==00001111(2)

b==32==00100000(2)

=>00101111(2)==a&b

最终输出结果是47

按位异或^便是取二者二进制码的补集

例如

int a=15,b=3;
pritnf("%d",a^b);

a==15==00001111(2)

b== 3==00000011(2)

=>00001100(2)==a&b

最后输出12

左右移位“>>” “<<”

x<<n

左移位相当于x的二进制非0值整体向左移n位,相当于x*2^n

x>>n

右移位不同于左移位,向右移出位的数自动丢弃,相当于x/2^n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值