谢谢您的解答, 问题3还是不大理解,就是④,0000000000000000(16位)为什么不会被认为是0?
⑦,1000000000000000(16位)为什么不会被认为是-0 ?0或2在short int型存储16位的时候是不是最高位的第16位为符号位,其它15位为存储绝对值部分且要全部用完?没用完的也要浪费在那?若是,浪费要怎么浪费?能否以2在short int型存储16位的时候,为例举个例子,说说它在计算机内是被存储成什么的呢?谢谢。
没有为什么就是硬性规定
0000 0000 0000 0000就是+0、-0
short int型占2字节 在电脑里是16位的2进制数存储 正的不足16位前面是一堆零,负的不足前面是一堆1
最高位(第16位)就是符号位,建议你随便找本汇编语言把第一章看了,然后再不懂再去问别人基础
谢谢您的解答, 问题3还是不大理解,就是④,0000000000000000(16位)为什么不会被认为是0?
⑦,1000000000000000(16位)为什么不会被认为是-0 ?0或2在short int型存储16位的时候是不是最高位的第16位为符号位,其它15位为存储绝对值部分且要全部用完?没用完的也要浪费在那?若是,浪费要怎么浪费?能否以2在short int型存储16位的时候,为例举个例子,说说它在计算机内是被存储成什么的呢?谢谢。
回答追问:
④——因为输出函数不认为只有16个0,它们前面的1也起作用了,且按32位输出时函数要把前面的符号们扩展到32位,这才出现了FFFF8000的情况。
⑦——很早以前的技术书籍把1000000000000000认为是-0,后来统一到它只表示-32768,0不再有正负之分,全用0表示。如果它表示了-0,由于-0、+0都是0,而-32768却没有编码表示了反而带来了麻烦。在计算机语言中,个别特殊“数”的编码只是些规定。以后还会遇到浮点数的什么系列化数非系列化数也有一些规定……你的问题可归结为:现在的平台如果不强制为short的话,输出函数就把short当int输出了;而你的平台即是不强制也兼顾了shor的符号规定,这与编译器有关!