理解为什么short类型溢出后的值为

理解为什么short类型溢出后的值为

解题思路:

1)占位符%d %d 就表示一定是整数,那就一定是int 和 short

2)short型数据的范围是-32768 ~ 32767, int型数据范围远大于此。因此正常输出的一定是int型,而输出为-32768一定是short类型变量发生了溢出

3)我们知道在计算机系统中,数值一律用补码来表示(存储),16位二进制数可以表示2的16次方个编码,而在补码中零的编码只有一个,但是0的原码却有两个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时变成1000000000000000。所以,人为规定1000000000000000这个补码编码为-32768。

4)32768我们可以理解成32767 + 1

32767在计算机内存中补码表示0111 1111 1111 1111

1在计算机内存中补码表示0000 0000 0000 0001

32767+1利用补码相加在计算机内存中的补码表示结果为1000 0000 0000 0000

该补码表示的即为 -32768

那为什么32768没办法直接转换成补码呢

因为对于16位的有符号数来说,没办法表达32768,会溢出,所以我们要拆成补码的形式去相加理解,就可以反推出溢出的数等于多少了

注意事项:

参考代码:

#include

int main()

{

print("D C\n");

return 0;

}

相关推荐

如何在iPhone上使用Memoji录制和发送视频
be365体育平台app

如何在iPhone上使用Memoji录制和发送视频

⏱️ 06-30 👁️ 142
旅行青蛙多久才會寄明信片 寄明信片時間介紹
best365怎么登

旅行青蛙多久才會寄明信片 寄明信片時間介紹

⏱️ 12-30 👁️ 7932
携程怎么认证学生身份
best365怎么登

携程怎么认证学生身份

⏱️ 09-15 👁️ 6066
keil为什么编程不能运行
best365怎么登

keil为什么编程不能运行

⏱️ 09-30 👁️ 6058
苹果语音备忘录在哪里
be365体育平台app

苹果语音备忘录在哪里

⏱️ 09-24 👁️ 9644
LOL大嘴手感最好皮肤排名是什么
best365怎么登

LOL大嘴手感最好皮肤排名是什么

⏱️ 07-24 👁️ 6211