小木心 发表于 2019-5-18 02:15:52

255的二进制数不是01111111?

“十进制的 255 即二进制的 11111111,signed char 第一位为符号位,因此其值转换为十进制后是 -1”
二进制左边第一位不是说正数为0负数为1吗?255转换负数后不应该是10000001?求解惑

小木心 发表于 2019-5-18 02:26:31

不好意思刚刚算错啦可得出来的255的二进制是01110111啊?转换负数10001001啊{:5_104:},哇更乱拉

小木心 发表于 2019-5-18 03:06:38

没算错,是因为太晚了看来我需要休息啦{:5_103:}

jackz007 发表于 2019-5-18 10:50:45

本帖最后由 jackz007 于 2019-5-18 10:52 编辑

      不需要转换负数,同样一个字节 255,就看你怎么看待和使用它,如果把它当成无符号数,就是 255,如果把它当成有符号数,那就是 - 1。
      下面的代码也许可以帮助你加深理解
#include <stdio.h>

main(void)
{
      char c                           ;
      unsigned char u                  ;
      c = 255                        ;
      u = 255                        ;
      if (c > 127) printf("c > 127\n") ;
      else printf("c < 127\n")         ;
      if (u > 127) printf("u > 127\n") ;
      else printf("u < 127\n")         ;
      printf("c = %d\n" , c)         ;
      printf("c = %u\n" , c)         ;
      printf("u = %d\n" , u)         ;
      printf("u = %u\n" , u)         ;
}

小木心 发表于 2019-5-18 16:33:27

jackz007 发表于 2019-5-18 10:50
不需要转换负数,同样一个字节 255,就看你怎么看待和使用它,如果把它当成无符号数,就是 255,如果 ...

谢谢
页: [1]
查看完整版本: 255的二进制数不是01111111?