作业帮 > 综合 > 作业

如图:C语言程序中无符号数a的值是负数,为什么作整形输出时的结果是64870?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 14:51:57
如图:C语言程序中无符号数a的值是负数,为什么作整形输出时的结果是64870?

为什么是这个64870?这个计数的结果是如何过来的?


如图:C语言程序中无符号数a的值是负数,为什么作整形输出时的结果是64870?
负数在内存中是以补码的形式存储的,
即 -666
原码:1000 0010 1001 1010
反码:1111 1101 0110 0101 (符号位不变,其它位取反)
补码:1111 1101 0110 0110 (反码+1)
即,实际内存中的数据为0b1111 1101 0110 0110=64870
而a为unsigned short int,所以反馈的应该就是64870正数.