分享一下我在复习c语言中的一些遇到的问题:
今天测试shor int 的表示范围,int 的内存位4个字节 shot int的内存位2个字节 一个字节又等于八个比特位 由此换算出shot int 的有十六个比特位可得出shot int 的表示范围为65535,但是重点来了,65535表示的是范围,而不是最大值,我一开始就认为他是最大值,结果顺行出来的值老是有问题
最终原因是在这里 16位二进制原码最大为 0111 1111 1111 1111 = 215 - 1 = 32767, 最小为 1111 1111 1111 1111 = -(215 - 1) = -32767 ,这俩个值加起来刚好就等于65535 ,
最后提醒一下首位为符号位,0位正,1为负