c++用printf函数输出数据格式附。。不明白为什么输出结果是那样的。。如图。 5

 我来答
韩和立南婉m
2014-10-21 · TA获得超过131个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:63.6万
展开全部
不同的编译器int的长度不同,有的32位,有的16位,在这里是16位
unsigned int(无符号整形),int(有符号整形)在计算机中都占16位,能够表示
的数字范围都是0x0000~0xffff(这里用16进制表示),但是这些数字的所表示的数
不一样,无符号整形对应的范围是0~65535(2^16-1),有符号整形的范围为:
-32768至32767,即-2^15至(2^15-1)
负数以补码的形式存储在计算机中,负数补码的计算方式,如x负数,第一步取x的绝对值,第二步计算x的二进制,第三步对二进制取反,最后在加1,最后得到的二进制形式即是负数x的存储形式。
d有符号十进制 o八进制 x十六进制 u无符号十进制
65535的16进制0xffff,八进制177777,在计算机中存储的内容就是二进制
0x1111111111111111(16个1,后面用16进制表示)转换成有符号数就是-1,
过程:0xffff首位是1是负数,因此这是补码,转换成真值就是上面过程的逆过程
0xffff -> 0xfffe(减1) ->0x0001(取反)->1(绝对值)-> -1(加负号)
-2的二进制的计算:是负数就计算补码 -2 ->2(绝对值)->0x0002(二进制:这里用十六进制表示)->0xfffd(取反)->0xfffe(加1)
在计算机-2的存储就是补码0xfffe 八进制177776 无符号数65534(就是0xfffe对应的数)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜礼服假面MP
2014-10-21 · TA获得超过3437个赞
知道大有可为答主
回答量:1034
采纳率:77%
帮助的人:363万
展开全部
%d int 接受整数值并将它表示为有符号的十进制整数,i是老式写法
%o unsigned int 无符号8进制整数(不输出前缀0)
%u unsigned int 无符号10进制整数
%x unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)

printf("a = %d,%o,%x,%u",a,a,a,a); 应该输出 a = 65535,177777,ffff,65535,你的图片是错的
printf("b = %d,%o,%x,%u",b,b,b,b); 应该输出 b = -2,37777777776,fffffffe,4294967294,你的图片是错的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式