为什么c语言输出-1不是65535 ?
为什么c语言输出-1不是65535 ?
日期:2019-11-23 22:10:28 人气:2
变量x为无符号数,2Bytes的存储单元的二进制存储的数为
1111 1111 1111 1111,即0xFFFF。
用%d输出是该变量存储单元内容的有符号数,此时第一位1代表负数。C语言默认有符号数存储为补码,所以:
补码:1111 1111 1111 1111
反码:1111 1111 1111 1110
原码:1000 0000 0000 0001
因此输出原码的十进制,即“-1”