移位操作符以及位运算操作符

 首先:移位操作符和运算操作符均是可以理解为整数储存在内存的二进制形式

 

使用该两种操作符会使该数二进制的大小发生改变,也就是数值的改变

而运算操作符往往具有特定的使用技巧

1.移位操作符

<<左移操作符

>>右移操作符

(移位操作符操作的对象只能是整数)

<<左移操作符

移位规则:左边抛弃,右边补0

 但事实是如果a没有被赋值,a的值不会被改变

>>右移操作符

警告⚠ :
对于移位运算符,不要移动负数位,这个是标准未定义的。

移位规则:

1.逻辑右移将各个位向最低位方向移动,最高位补0。

2.对于算数右移来说,它是将各个位向最低位方向移动,最高位用数据原本的符号位进行填充。

区别是:

对于无符号数据类型,执行的是逻辑右移

如果定义的是一个有符号的数据类型,执行的是算数右移

一般来说,对于无符号数,左移1位就相当于将这个数扩大两倍,前提是没有发生数据溢出。

相同的,对于无符号数,执行逻辑右移,结果相当于把这个数除以2

位运算操作符

& 按位与

| 按位或

^ 按位异或

~取反

1.& 按位与

功能:只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

2.| 按位或
功能:只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
3.^ 按位异或
功能:双目运算符,当两数的二进制位相异则为1,相同则为0。
4.~ 按位取反
功能:求反运算符~为 单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。
int a=10
~a
00000000 00000000 00000000 00001010//   10的原码和反码
111111111 111111111 111111111  11110101//    ~10的反码
若想得出~a的值,则可以先减一再取反
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值