zoukankan      html  css  js  c++  java
  • 位运算的初了解(一)

      一直对位运算感觉很是不解,最新重新学习了一下,做了个整理。

      刚开始学,我也有太多的疑惑。首先,我们都知道在计算机中,数据都是以二进制进行存储和运算。但是在计算机中数据二进制的运算是以怎样的形式进行的呢?因为数有正数和负数,二进制是如何表示和区分分正数和负数的呢?目前计算机中使用的运算方法普遍是二进制补码的方式进行的,这又是为什么呢。

      以下,我们用八位二进制位来表示一个数。比如十进制的10,二进制表示为0000 1010。

    1.   原码
    •   为了区分数的正负,我们可以将它的最高位作为符号位,0代表正,1代表负数
    • 以上这种表示称为数的原码

    • 如果我们直接对原码进行相加得到什么样的结果呢。按照我们的本意10-10=0,但是实际上呢?10与-10的二进制码相加为1001 0100,转为十进制为-24,显然不为0。也就是说使用原码直接进行运算是不可以的。
    1.       补码
    • 我们希望可以使用一种方式,使得 原码+?码 = 0,由此我们得到了补码。
    • 首先我们需要补充的是上述是对负数而言的,对正数来说,原码,反码和补码相同的。也就是如果二进制最高符号位是0的话,你就不需要去纠结想其他。
    • 回归到负数上。负数的原码即有符号位的二进制表示。反码:原码符号位不变,其余按位取反。补码:原码符号位不变,其余按位取反后加1.即(反码+1)
    • 以下我们可以看出使用补码运算可以完美解决有符号位问题,这也就是计算机使用二进制补码运算的原因。

  • 相关阅读:
    wav格式
    python字符串操作
    云中Active Directory是如何工作的?
    Azure Active Directory中的特权身份管理如何运作?
    工作组下的共享设置
    重新审视虚拟桌面存储
    NAND
    如何使用PowerShell管理Windows服务
    如何应对云爆发架构?四种方法替你解忧
    配置网络策略中的 NAP 条件
  • 原文地址:https://www.cnblogs.com/PPhoebe/p/10619842.html
Copyright © 2011-2022 走看看