255的二进制数不是01111111?
“十进制的 255 即二进制的 11111111,signed char 第一位为符号位,因此其值转换为十进制后是 -1”二进制左边第一位不是说正数为0负数为1吗?255转换负数后不应该是10000001?求解惑
不好意思刚刚算错啦可得出来的255的二进制是01110111啊?转换负数10001001啊{:5_104:},哇更乱拉 没算错,是因为太晚了看来我需要休息啦{:5_103:} 本帖最后由 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) ;
}
jackz007 发表于 2019-5-18 10:50
不需要转换负数,同样一个字节 255,就看你怎么看待和使用它,如果把它当成无符号数,就是 255,如果 ...
谢谢
页:
[1]