移位操作符 位操作符详解

hello hello,想我了吗?

😄😄😄

首先是移位操作符:<< 左移操作符     >> 右移操作符

   注:移位操作符的操作数只能是整数。

  << 左移操作符:移位规则: 左边抛弃、右边补0

 为什么等于20呢?我们来见分晓: 在内存中我们的CPU都是以补码进行计算

00000000000000000000000000001010 --m的原码(10)  正数的 原 反 补码相同;
00000000000000000000000000010100 --左移后--20

 就是向左移一位,左边的抛弃掉,右边的补上0,0010100就是20咯!


>> 右移操作符:首先右移运算分两种:

1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充,右边丢弃  逻辑位移和算术位移则取决于编译器

为什么等于5呢我们来见分晓:

00000000000000000000000000001010 --m的原码(10)
00000000000000000000000000000101 --右移位后 m的原码  0101呢就是我们的5啦


 位操作符:

位操作符有: & // 按位与        | // 按位或           ^ // 按位异或
注:他们的操作数必须是整数。

& //按位与 :只要有0就为0,两个同时为1才为1

10000000000000000000000000000011 --    -3的原码
11111111111111111111111111111100 --   -3的反码
11111111111111111111111111111101 --   -3的补码
00000000000000000000000000000100 --    4的原码(补码)

//两数按位与 &
11111111111111111111111111111101 --      -3的补码
00000000000000000000000000000100 --   4的原码(补码)
00000000000000000000000000000100 --   是一个正数,那么这个补码就是原码咯,那么就是我们的数字4咯

 


| //按位或 :只要有1就是1,两个同时为0才为0

10000000000000000000000000000011 -- -3的原码
11111111111111111111111111111100 -- -3的反码
11111111111111111111111111111101 -- -3的补码
00000000000000000000000000000100 -- 4的原码(补码)

两数按位或 |
11111111111111111111111111111101 -- -3的补码
00000000000000000000000000000100 -- 4的原码(补码)
11111111111111111111111111111101 -- 此时是一位负数的补码,我们要把它转换为原码!

 补码->原码  取反后加一
10000000000000000000000000000010 -- 取反
10000000000000000000000000000011 -- 原码 -- 前面是1后面是0011 那就是我们的-3咯


^ //按位异或:相同为0,相异为1

10000000000000000000000000000011 -- -3的原码
11111111111111111111111111111100 -- -3的反码
11111111111111111111111111111101 -- -3的补码
00000000000000000000000000000100 -- 4的原码(补码)

两数按位异或 ^
11111111111111111111111111111101 -- -3的补码
00000000000000000000000000000100 -- 4的原码(补码)
11111111111111111111111111111001 -- 此时是一位负数的补码,我们要把它转换为原码!

 补码->原码  取反后加一
10000000000000000000000000000110 -- 取反
10000000000000000000000000000111 -- 原码 -- 前面是1后面是0111 那就是我们的-7咯

注:取反的时候符号位不变。


下面来分享一道题,不能创建临时变量(第三个变量),实现两个整数的交换。

怎样做这道题呢,其实这时候就可以用到我们的按位异或^。

 你知道其中的奥秘吗?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

并不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值