zoukankan      html  css  js  c++  java
  • 左移右移运算符 & ~取反运算符

    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)

  • 相关阅读:
    Livepool
    Eclipse最新版注释模板设置详解
    hashcode详解
    开发集成工具MyEclipse中Outline的问题
    第三章 数据链路层(二)
    Java常考面试题(四)
    collections集合的总括。
    第三章 数据链路层(一)
    Java常考面试题(三)
    Java常考面试题(二)
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15108330.html
Copyright © 2011-2022 走看看