位操作符

按位操作符

  • 按位与 :&
  • 按位或 :|
  • 按位非 :~
  • 按位异或 :^

按位与 :&

两个操作数中位都为1,结果才为1,否则结果为0。

如:129转换成二进制就是10000001,128转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。

按位或 :|

两个位只要有一个为1,那么结果就是1,否则就为0。

如:129转换成二进制就是10000001,128转换成二进制就是10000000。根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

按位非 :~

它是一个一元操作符,也叫取反操作,连符号位也会取反,也就是说它只有一个参数。如果位为0,结果是1,如果位为1,结果是0。

如:128转换成二进制就是10000000。根据非运算符的运算规律,如果位为0,结果是1,如果位为1,结果是0,可以知道结果就是01111111,即127。

按位异或 :^

两个操作数的位中,相同则结果为0,不同则结果为1。

如:15转换成二进制为1111,2转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101,即13。

移位操作符

  • 左移操作符 :<<
  • 右移操作符 :>>
  • 无符号右移 :>>>

左移操作符 :<<

转为二进制后,各二进制位全部左移N位,高位丢弃,低位补0。

如为正数:2转换成二进制为0010,根据左移的运算规律,可以得出结果为:1000,即8;负数的话,会先转为补码,再进行位移运算。
如为负数:

对于-2<<2
10000000000000000000000000000010(原码)
11111111111111111111111111111101(反码)
11111111111111111111111111111110(补码)

位移2位,低位补0
1111111111111111111111111111111000

11111111111111111111111111111000(补码)
11111111111111111111111111110111(反码)
10000000000000000000000000001000(原码)

即-8

右移操作符 :>>

转为二进制后,各二进制位全部右移N位,若值为正,则在高位插入 0,若值为负,则在高位插入 1。

如为正数:2转换成二进制为0010,根据左移的运算规律,可以得出结果为:0000,即0;
如为负数:

如果为负数,对于-6>>2
10000000000000000000000000000110(原码)
11111111111111111111111111111001(反码)
11111111111111111111111111111010(补码)

位移两位,高位补1
11111111111111111111111111111110

11111111111111111111111111111110(补码)
11111111111111111111111111111101(反码)
10000000000000000000000000000010(原码)

即-2

无符号右移 :>>>

转为二进制后,各二进制位全部右移N位,无论正负,都在高位插入0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值