C语言的整数的取值范围的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:55:29
int x
int占2byte =16 bit 除去最高位为符号位
2^(16-1) -1 >= x >= -2^(16-1)
32767 >= x >= -32768
~~~~~~~~~~~~~~~‘
肯定是上面的方法算出来的,但是我还搞的不完全懂那个2^(16-1) -1中的最后一个-1,也就是括号外的-1,怎么来,后来我一想应该是负数要取反后还要加一是吧,但是具体的那个过程脑袋还不清白,麻烦你说下,节约时间些,谢了

你自己也说了去掉符号位,那就只有15位,2^15是多少呢?是1000 0000 0000 0000,这个就是16位了,2^15-1是111 1111 1111 1111,这个才是15位的,-1就是这个作用,是一个很简单进位运算

那个“1”应该代表0吧!计算机用1和0表示所有的数据,在8位的情况下表示整数 ,包含符号位,假使0 xxxxxxx为正,1 xxxxxxx为负,那么计算机用 1 0000000表示-1,而0 0000000就必须用来表示0 如果0 xxxxxxx与1 xxxxxxx表示的数都一样,只是符号不一样,那就没有表示“0”的2进制数了。所以正数要少一位