
C语言unsigned char x=-1;printf("%d\n",x);为何输出会是255?
unsignedcharx=-1;printf("%d\n",x);char我是作为无符号字符型初始化为-1,仍后按照%d输出,结果为何会是255,想知道计算机具体处理过...
unsigned char x=-1; printf("%d\n",x); char我是作为无符号字符型初始化为-1,仍后按照%d输出,结果为何会是255,想知道计算机具体处理过程。
展开
1个回答
展开全部
需要了解
整数
在计算机中的编码
,对于整数在计算机中一般是
原码
、
反码
、
补码
三种
编码方式
,以-1为例。选择8位的二进制数来表示:
-1的原码
10000001
//最高位为符号位
-1的反码
11111110
//符号位不变,各位求反
-1的补码
11111111
//符号位不变,反码加1
所以,当使用unsigned
char
即无符号整数时,-1用补码表示即1111
1111,
十六进制
表示为0xff
,十进制表示即为255。
整数
在计算机中的编码
,对于整数在计算机中一般是
原码
、
反码
、
补码
三种
编码方式
,以-1为例。选择8位的二进制数来表示:
-1的原码
10000001
//最高位为符号位
-1的反码
11111110
//符号位不变,各位求反
-1的补码
11111111
//符号位不变,反码加1
所以,当使用unsigned
char
即无符号整数时,-1用补码表示即1111
1111,
十六进制
表示为0xff
,十进制表示即为255。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询