位运算

位运算

位运算是根据变量在内存中存储的二进制位进行运算,而不是其二进制数形式

-9的二进制数:-1001

-9在内存中的存储形式:11110111

C语言

1. 按位与(&)

参与运算的两个二进制位都为一,结果为一,其余情况都为零。

即:1&1 == 1 1&0 == 0 0&0 == 0

例:

-9&9 == 1

解析:

11110111 &

00001001 ==

00000001

2. 按位或(|)

参与运算的两个二进制位都为零,结果为零,其余情况都为一

3. 按位异或(^)

参与运算的两个二进制位不同时结果为一,相同时为零

即:1^1 == 0 1^0 == 1 0^0 == 0

4. 取反(~)

单目运算符,对参与运算的二进制位取反

即:~1 == 0 ~0 == 1

例:

~(-9) == 8

解析:
111101111

== 00001000

5. 左移(<<)

将操作数在内存中存储的个二进制位都左移若干位,高位丢弃,低位补零

例:

9<<3 == 72

解析:

00001001 << 3 ==

01001000

6. 右移(>>)

将操作数在内存中存储的二进制位都右移若干,低位丢弃,操作数为负数时,高位补一,其余补零

Java

除新增外同C语言

1. 无符号右移(>>>)

将操作数在内存中存储的二进制位都右移若干,高位补零,低位丢弃。此运算不考虑操作数的正负

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值