首页 > 用户发贴区 > 编程问题提问区 > C语言整型数据范围
2008
08-26











C语言整型数据范围


关于数据类型的范围是如何确定的?
1.我有个问题一直想不通,看书说int型数据的范围是-32768~32767,因为Int型数据占2个字节,也就是16位,但既然如此,它的范围不应该是-32767~-32767吗?怎么是从-32768开始呢?请编程爱好者告诉我这个初学者,将不胜感激!!!



2.那-32768用二进制不是就表示成1 1000 0000 0000 0000吗?其中第一个1表示负数,既然是这样,那一共有17位呀??为什么???



 



C语言整型数据范围》有 5 条评论

  1. TONYAZITEN 说:

    对于int数据类型可以按2字节也可以按4字节存储,因机器而已。如果是按2字节存储的话,他的上界应该是2的15次方减1(32767),上界为2的15次方的相反数(-32768),在整个范围内负整数与非负整数是各占一半的,你的理解是不符合这个条件的。

  2. xstar 说:

    计算机中保存整数是以补码的形式保存的!(这是为了把减号运算转换为加号运算)
    正数的补码就是它本身!
    负数的补码为正数的反码加1!
    -32768的补码计算方法为
    1000 0000 0000 0000     正数32768
    0111 1111 1111 1111     反码32768
    1000 0000 0000 0000     补码-32768

    做减法运算的方法为把减号当做后一个数字的符号位!

    然后换算为补码形式!两个补码相加,别管溢出情况,就是得到的数值!

    比如: 32767-32768
    0111 1111 1111 1111 + 1000 0000 0000 0000
    =
    1111 1111 1111 1111(补码形式的-1,减1取反就是正数1的补码)

  3. VBProFan 说:

    在32位系统中,例如 VC 编译器,int 是32位,4字节。TC 中是16位。

  4. 狂野的云 说:

    版主的 数制学的很好啊!!!

    这样讲就没什么好挑剔的了~~

  5. killkk 说:

    初学者来了。。。。 学习

留下一个回复