爱问知识人 爱问教育 医院库

整型数据范围

首页

整型数据范围

基本整型范围为啥后是-32768 ~ 32767 ??取值范围不应该所有位相加也就是2^1+...+2^15??? 
还有字节是咋算的??为啥2字节就是16位2进制~4字节就是32位位进制??

提交回答
好评回答
  • 2008-09-15 15:10:37
      因为计算机内表示数值使用的是补码,而不是原码,所以你才有这样的疑问。下面我简单解释一下你就明白了。
    原码就是这个数本身的二进制形式。 以8位二进制为例
    0000001 就是+1
    1000001 就是-1 
    补码分为两种情况:1、正数的补码与原码一样;2、负数的补码是符号位保持不变,其余各位取反,再加1。
       反码就是负数符号位不变,其余各位取反,正数反码与原码相同。 以四位二进制为例,其原码、反码、补码为: 真值 原码 反码 补码 7 0111 0111 0111 6 0110 0110 0110 5 0101 0101 0101 4 0100 0100 0100 3 0011 0011 0011 2 0010 0010 0010 1 0001 0001 0001 0 0000 0000 0000 -0 1000 1111 0000 -1 1001 1110 1111 -2 1010 1101 1110 -3 1011 1100 1101 -4 1100 1011 1100 -5 1101 1010 1011 -6 1110 1001 1010 -7 1111 1000 1001 为什么要设立补码呢? 第一是为了能让计算机执行减法:[a-b]补=a补+(-b)补 第二个原因是为了统一正0和负0 正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。
       但是他们的补码是一样的,都是00000000 16位二进制原码表示的负数是 -0~-32767,包括-0加起来是32768个数;因为补码加了1,所以补码的表示范围是 -1~-32768,也是32768个数。 n位补码能表示的范围的公式是 -2^(n-1)到2^(n-1)-1 比n位原码能表示的数多一个 。
      

    o***

    2008-09-15 15:10:37

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 174-193
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):