为什么~2=-3?

作者: 李凯强 | 来源:发表于2015-11-22 11:34 被阅读77次

在说这个问题之前,我们需要知道这几个概念:原码、反码、补码

  1. 在计算机运算的时候,都是以补码的形式运算的
  2. 正数的原码、反码、补码都一样
  3. 负数的反码=它的原码符号位不变,其余位取反
  4. 负数的补码=负数的反码+1
  5. 0的反码、补码都是0
  6. 二进制的最高位为符号位,0表示正数,1表示负数


    在计算机中,2的二进制为00000010,它的反码、补码都是00000010,如果要对2按位取反,就要对它的补码按位取反。

    00000010按位取反结果为11111101

    对补码取反的结果仍是补码,只不过它会变成另外一个数的补码,这个数(用a表示)就是我们的计算结果,11111101的最高位是1,说明它是某一个负数的补码,由于负数的补码等于它的反码+1,所以a的反码为11111100,a的原码为10000011,即为-3
~2
-3

我们再举个例子

~-8
7

-8的原码为10001000

-8的反码为11110111

-8的补码为11111000

对11111000取反,结果为00000111,最高位是0,说面它是某个正数(b)的补码,由于正数的原码、反码、补码一样,所以b=00000111,即为7

相关文章

  • 2,map参数

    1,['1', '2', '3'].map(parseInt); 为什么输出的不是[1, 2, 3],而是[...

  • 为什么~2=-3?

    在说这个问题之前,我们需要知道这几个概念:原码、反码、补码 在计算机运算的时候,都是以补码的形式运算的 正数的原码...

  • JS 原型

    举例1,var a = [1,2,3]2,只有0、1、2、length 4 个key3,为什么可以 a.push(...

  • 为什么?

    1. 为什么单身? 没有钱。 2.为什么还单身? 有钱了。 3.为什么不合群?

  • 【5482-170428】手帐岛打卡day5

    【1】5W2H;Why为什么;where哪里 【2】2W1H;what什么;why为什么;how怎么做 【3】Ho...

  • 2017-12-26

    1.为什么,是什么。 2.但是,同时 3.

  • 第三周 为什么?

    NO3.WHY? 老大 1.你知道谁是爱娃吗?她为什么自杀? 2.人为什么会长大? 3.为什么我们车这么耗油,滴滴...

  • 为什么js 3>2>1 为false,1<2<3为true?

    问题:为什么js 3>2>1 为false,1<2<3为true? 首先,我们需要知道,在js中 0 == fal...

  • 为什么js中的3>2>1 为false,1<2

    问题:为什么js中3>2>1为false,1<2<3为true? 首先,我们需要知道,在js中0 == false...

  • 解密通信框架领域独秀LiveDataBus

    1、为什么要使用liveDataBus2、liveDataBus为什么会感知生命周期3、liveDataBus为什...

网友评论

    本文标题:为什么~2=-3?

    本文链接:https://www.haomeiwen.com/subject/wvfrhttx.html