在C语言中,int型变量计算时采用二进制补码表示,即将整数部分转化成二进制,若为正数,则直接转化;若为负数,则先将其绝对值转化成二进制后,再进行按位取反操作,最后再加1。
因此,在计算int型变量时,需要考虑符号位和转换成2进制数之后的运算规则,可以采用按位运算的方式进行计算。
为什么在 c语言中,int 有个范围,这个范围怎么计算的?
int型取值范围为-32768~32767是针对int型占2个字节来说的。
下面具体说明该范围的求法:
int型占2个字节,共16位。
int型能表示的最大正数为(最高位为符号位,正数的符号位为0):0111
1111
1111
1111
也即2^15-1=32767
int型能表示的最小负数为(最高位为符号位,负数的符号位为1):1000
0000(补码),而在计算机中负数是利用补码进行存储的,所以将1000
0000转换为源码就是1000
0000,也即-2^15=32768
所以int型取值范围为-32768~32767