zoukankan      html  css  js  c++  java
  • 重温位运算、原码、反码、补码、以及>>和<<<区别

    一个例子说明原码,反码,补码

    下面进行5和-5的原码,反码,补码表示:

    5的原码:0000 0101

    5的反码:0000 0101

    5的补码:0000 0101

    -5的原码:1000 0101

    -5的反码:1111 1010

    -5的补码:1111 1011

    现在来看位运算

    1、>>表示右移(有符号右移),如:15>>2的结果是3,-31>>3的结果是-4,左边以该数的符号位补充,移出的部分将被抛弃。

        转为二进制的形式可能更好理解(省略左边的三个字节),0000 1111(15)右移2位的结果是0000 0011(3),1110 0001(-31)右移3位的结果是1111 1100(-4)。

    注:  计算机只认识二进制;

      这里介绍-31右移3位的计算过程:

    -31  原码:1001,1111

      反码:1110,0000

      补码:1110,0001

    右移3位得: 1111,1100,则---->1111,1011,-----> 1000,0100(-4)

    2、>>>也表示右移,但是是无符号右移,如:15>>>2的结果是3,-31>>>3的结果是536870908,移出的部分将被抛弃:

        同样转为二进制的形式,00000000 00000000 00000000 00001111(15)右移2位的结果是00000000 00000000 00000000 00000011(3),

        11111111 11111111 11111111 11100001(-31)右移3位的结果是00011111 11111111 11111111 11111100(536870908)。

  • 相关阅读:
    欧几里德算法
    int 和 string 相互转换(简洁版)
    骆驼吃香蕉
    链表反转 (Multi-method)
    二分查找 (最经典代码,及其边界条件的实践分析)
    mottoes
    欧拉函数,欧拉定理,费马小定理。
    深搜和广搜的对比
    Python基础
    马拉车求最大回文字串
  • 原文地址:https://www.cnblogs.com/linkmust/p/11338574.html
Copyright © 2011-2022 走看看