• 左移右移运算符 & ~取反运算符


    1、左移右移运算符:

    二进制运算的运算符号。
    "<<“和”>>"
    "<<"左移:其实就是x2的移动位数的次幂
    ">>"右移:就是除以2的移动位数的次幂。
    “>>”和“>>>”
    “>>”:最高位补什么,有原有数据的最高位值而定。
    如果最高位是0(代表是正数),右移后,用0补空位。
    如果最高位是1(代表是负数),右移后,用1补空位。

    可能你对负数右移之后用1补空位的结果为什么会等于负数除于2,我们来举个例子:

    负数:-4

    原码:1000 0100(最高位代表符号位,我们简单的用8位来模拟)

    反码:1111 1011(反码除了符号位不取反,其他都取反)

    补码:1111 1100 (补码=反码+1)

    -4右移一位之后

    补码:1111 1110

    反码:1111 1101(反码=补码-1)

    原码:1000 0010(结果就是-2)

    注意:正数的原码、反码、补码都一样


    “>>>”:无论最高位是什么,右移后,都用0补。

     

    2、~取反运算符

    按位取反:二进制每一位取反,0变1,1变0。

    ~9的计算步骤:
    转为原码:0 1001
    计算补码:0 1001
    按位取反:1 0110

    1 0110转为原码(注意现在它是一个负数了):

    反码:1 0101

    原码:1 1010
    符号位为1是负数,即-10

    ~-9的计算步骤:
    转二进制:1 1001
    计算补码:1 0111
    按位取反:0 1000

    0 1000转为原码:

    反码:0 1000

    原码:0 1000(也就是8)

  • 相关阅读:
    php 日期处理 DateTime
    http范围请求
    fiddle扩展
    汉字编码 (GB2312 GBK GB18030)
    Navicat http 通道增加验证
    vim 支持 nginx配置文件 语法高亮
    composer 使用
    剖析nsq消息队列(三) 消息传输的可靠性和持久化[一]
    剖析nsq消息队列(二) 去中心化源码解析
    剖析nsq消息队列(一) 简介及去中心化实现原理
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15108330.html
Copyright © 2020-2023  润新知