C语言:int b=-2;printf("%u\n",b);输出结果:65534 求计算过程
4个回答
展开全部
%u是指按照无符号十进制输出,-2在内存中是按照补码存储的,即-2的存储形式是2的各位取反再加1,2:0000 0000 0000 0000 0000 0000 0000 0010,取反后:1111 1111 1111 1111 1111 1111 1111 1101,加1 : 1111 1111 1111 1111 1111 1111 1111 1110,最高位为1表示这个数是负数,按照无符号十进制输出时,最高位也计算入内,不再计入符号位,所以输出的数变为:2^1 +... + 2^31 = 4294967294.同理,-1, -3, 0输出分别为:4294967295, 4294967293, 0.以上结果在visual studio2010中运行,int为4个字节。
追问
为什么b=-1,-3时输出结果为10位,-2时是5位啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以看出来你是在16位系统上运行这程序得到的结果.
其实你想问的是有符号型整数与无符号型整数的转换关系而已.
有符号型整数的最高位表示 符号, 负数情况下为1, 而无符号型整数的最高位表示数值.
-1 => 65535
-3 => 65533
0 => 0
其实你想问的是有符号型整数与无符号型整数的转换关系而已.
有符号型整数的最高位表示 符号, 负数情况下为1, 而无符号型整数的最高位表示数值.
-1 => 65535
-3 => 65533
0 => 0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询