美文网首页
反码补码和char里10000000表示-128

反码补码和char里10000000表示-128

作者: b6aed1af4328 | 来源:发表于2016-09-21 19:31 被阅读77次
  • 反码:除符号位外,逐位取反。
  • 补码:反码+1,符号位也参与运算。
    正式运算中,符号位也参与运算的。
  • -128用9位表示为1 1000 0000,而char只有8位,截断了一位,故用1000 0000(-0)来表示-128。但实际上计算-128时,应加一位的。
    有了证明
    unsigned char c=-1; printf("%d",c);

输出为255。
佐证了-1先是作为char的符号数转为补码1111 1111,之后被识别为无符号数,为正数,再转换为原码1111 1111 输出255.

unsigned char c=-8; printf("%d",c);

输出为248。
佐证了上面的猜想。10001000先是作为有符号数,转为补码11111000,之后被识别为无符号数,为正数,再转为原码1111 1000,输出248.

unsigned char c=-128; printf("%d",c);

输出为128。
这是因为补了一位,为1 1000 0000,反码为1 0111 1111,补码为1 1000 0000,为无符号数,符号位被丢弃,为正数,转原码为1000 0000,输出128.

相关文章

  • 反码补码和char里10000000表示-128

    反码:除符号位外,逐位取反。 补码:反码+1,符号位也参与运算。正式运算中,符号位也参与运算的。 -128用9位表...

  • 原码、反码、补码 ,10000000 = -128

    一 clang 分四步编译main.c 这里用的clang/clang++ 分四步编译main.c/main.cp...

  • -128补码10000000

    最近在学Swift, 在学到高级运算符的时候, 用到了位运算, 然后发现自己把计算机基础的进制忘的差不多了. 在这...

  • 计算机为什么要使用原码、反码、补码

    1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 原码、反码、补码的计算方式如下:...

  • JAVA中负数的二进制表示

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,反码=原码按位取反 补码=反码+1。 移码为补码...

  • 数据的表示

    1位符号位+7位数值位正数:原码=反码=补码负数:反码=原码数值位取反 符号位不变补码=反码+1补码的表示范围位数...

  • Java 位运算(左、右,无符号右移位、按位与、按位或、按位非、

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,补码=反码+1。在二进制里,是用 0 和 1 来...

  • 原码,反码和补码

    在计算机内,有符号数有3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的。 正数的原码,反码,补码都相...

  • Java 二进制

    原码、反码、补码 二进制的最高位是符号位, 0表示正数, 1表示负数; 正数的原码, 反码, 补码都一样; 负数的...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

网友评论

      本文标题:反码补码和char里10000000表示-128

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