老师,关于unsigned char c = -1那段

Martes C++ 变量和基本类型 (1) 最后由 极客学院_吕布 于2015年05月19日回复

  • 2 回答
  • 1.5k 浏览

老师,关于unsigned char c = -1那段,还是不太明白怎么出的255,要是c = -2呢?结果是什么?

  • 蓝色寒冰 2015年05月01日 回答 #1楼
  • 在计算机中,整数用补码表示,正数的补码是原码,负数的补码是原码按位取反再1,

    unsigned char c = -1;
    // 1的补码是原码 00000001
    // 1的补码按位取反得到 11111110
    // -1的补码是1的补码按位取反再加1,得到 11111111
    unsigned char c2 = -2;
    //2的补码是原码 00000010
    //2的补码按位取反得到 11111101
    //-2的补码是2的的补码按位取反再加1,得到 11111110
    
  • 0 评论
  • 极客学院_吕布 2015年05月19日 回答 #2楼
  • 因为unsigned char占8bit,而计算机用补码表示,负数的补码为原码按位取反再加1

    所以其被表示为11111111,有因为unsigned char为无符号类型,最高位不表示符号位,所以结果为255

  • 0 评论