移位操作符与位操作符基础

目录

1.移位操作符

原码、反码与补码

左移操作符

 右移动操作符

 2.位操作符

        按位与&

        按位或|

        按位异或^

        位操作符的应用

                不用中间变量交换两个数        

                求二进制中1的个数

1.移位操作符

        ---移位操作符移动的是二进制的补码

        << 左移操作符

        >> 右移操作符

原码、反码与补码

        在了解移位操作符以前,我们需要先了解整数二进制的表示,在内存中,为了方便计算,整数是通过二进制补码储存的:例如数字int a =15 原码如下:

    原码:00000000  00000000  00000000  00001111 (最高位为符号位,0表示整数,1表示负数)

    正数的原码,反码,补码相同

   -15的原码  10000000  00000000  00000000  00001111

            反码  111111111  111111111  111111111  11110000 (符号位不变,其他位按位取反)

            补码  111111111  111111111  111111111  11110001 (反码加1)

左移操作符

        基本规则:左边丢弃,右边补0

        例如:正整数4在内存中的原码反码与补码如下:

        00000000  00000000  00000000  00000100  左移一位后获得

      00000000  00000000  00000000  000001000  (右边用0补齐)

        那么负数呢? 我们以-4为例,-4的原码反码补码如下

        原码 10000000  00000000  00000000  00000100

        反码 111111111  111111111  111111111  111111011

        补码 111111111  111111111  111111111  111111100

        左移一位获得

               111111111  111111111  111111111  1111111000  

       由于求值使用的是原码,因此要把补码转化为原码,转化后如下

                10000000  00000000  00000000   00001000 故结果为-8

           <

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值