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)
    • 以下我们可以看出使用补码运算可以完美解决有符号位问题,这也就是计算机使用二进制补码运算的原因。

  • 相关阅读:
    mysql触发器的实战经验
    mysql存储程序查看
    索引性能优化(待整理)
    MySQL性能测试工具
    列级触发器 SQL Server
    synthetic division
    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de
    mysql触发器和定时器
    数据库触发器有以下的作用
    mysql 日志
  • 原文地址:https://www.cnblogs.com/PPhoebe/p/10619842.html
Copyright © 2011-2022 走看看