作业帮 > 综合 > 作业

C语言问题:一个两字节的存储单元所存的最小整数

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/07 08:48:34
C语言问题:一个两字节的存储单元所存的最小整数
书上说:由两字节存放的最小整数是 1000 0000 0000 0000,这是为什么?请大师指教.
C语言问题:一个两字节的存储单元所存的最小整数
对于所有整数在内存中都是以整数的补码形式存在,2个字节是2*8=16位,而位是用0或1表示的,自己画16个空格,如果是最大正整数的话,开头第一位必须是符号位0,然后后面的15位都是1,所以表示的最大十进制整数是32767,如果是最小负整数的话,开头第一位必须是符号位1,另外要记住这样一个关系原码=补码取反-1(这里的取反包含符号位,这里举个例子求补码为11111010的十进制整数,先对其补码取反的00000101,算的的结果为5,因为补码的最高位是1可以断定该数为负数,所以结果为-5再减1得,-6),因为最高位为1已经定下来啦,所以要使原码最大,则补码取反必须最大,则补码必须最小,则后面的15位都为0,所以补码必须为1000000000000000,通过刚才的方法先求反得0111111111111111,得到的整数为32767,因为补码的最高位是1可以断定该数为负数,所以结果为-32767,再减1得-32768..这个还是比较绕人,自己再好好想想吧~~~