• 位运算的初了解(一)


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

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

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

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

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

  • 相关阅读:
    SQL第3课:具有约束的查询(第2部分)
    SQL第1课:SELECT查询
    idea快捷键
    Vue基础
    分布式基础
    数据结构-线性表
    常用算法
    数据结构-概述
    Django使用Jinja2模板引擎
    宿主机nginx使用容器php-fpm处理php请求
  • 原文地址:https://www.cnblogs.com/PPhoebe/p/10619842.html
Copyright © 2020-2023  润新知