位运算

位运算

1.按位取反 ~
int a = 2;						//0000 0000 0000 0000 0000 0000 0000 0010
printf("~a = :%d\n",~a);		//1111 1111 1111 1111 1111 1111 1111 1101  打印输出时  会转换储存码(计算机认为默认保存的为反码)
								//转换为1000 0000 0000 0000 0000 0000 0000 0010 + 1  打印输出
2.按位与 &
  • 同真为真 其余为假

1111 0000

1010 1010

&

1010 0000

3.按位或 |
  • 同假为假 其余为真

1111 0000

1010 1010

|

1111 1010

4.按位异或 ^
  • 不同为真 相同为假

1111 0000 X

1010 1010 Y

|

0101 1010 Z

Z = X^Y

X=Z^Y

Y=Z^X

5.左移运算符 <<

0000 0001 1 << 1

0000 0010 2 << 1

0000 0100 4 << 3

0010 0000 32

左移相同于 变量*(2^n)

6.右移运算符

0010 0000 32 >> 2

0000 1000 8

右移相同与 变量/(2^n)

  • 注意,对于无符号数,右移后,空位由0填充
  • 对于有符号数,右移后,空位可能由1,也可能由0填充…根据机器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值