怎么理解符号整数的取值范围(C )计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:59:36
来源 100Test.Com百考试题网


  之前我们讨论到了整数有区分符号的,也就是有正负数之分。一个典型的整数,如char。有符号和没有符号,取值范围是不一样的
  1. 有符号的char : 取值范围为-128~127
  2. 无符号的char : 取值范围为0~255
  首先看无符号的
  1. 为什么最小为0: 0000 0000 当然是0
  2. 为什么最大是255 : 1111 1111当然是255
  这个很好理解。
  然后来看有符号的。C 标准中并没有规定如何处理符号,这个问题一般都是由各个编译器决定怎么处理。通常情况下的做法都是用一个位作为符号位。这个符号位如果为1,则为负数,这个符号位如果为0,则为0或者正数。来源:www.100test.com
  1. 为什么最小为-128?
  1 111 1111
  第一个1表示负数,后面7个1为127.所以应该是-127的。为什么说是-128呢?可能有的编译器是这样决定的:因为0~127之间,一共是128个数字。然后负数方面呢,就不需要考虑0了,因为0已经表示过了,其实就是(00000000),它不可能再用一个(1000000)去表示另外一个零,这毫无意义。所以,在负数方面也要128个数,加起来才是256个数。那么从-1到-128正好是128个数。
  2. 为什么最大为127?
  0 111 1111 这肯定是127.
  那么,如果说赋予给数值的值超过了范围呢?会怎么样呢?来源:
  一般都是这样处理:将实际的数值求256的模,然后返回。例如给出的300,则实际上代表的是300%6,也就是多少呢
  为了演示这个效果,我写了一段小的程序
  #include 

相关文章


对容器元素重新排序计算机等级考试
计算机二级辅导:几个C语言经典例题计算机等级考试
继承关系中基类和子类构造函数的调用顺序计算机等级考试
重复输入某个字符(C ,C#)计算机等级考试
怎么理解符号整数的取值范围(C )计算机等级考试
计算机二级c 辅导:C 中定义常量的两种方法的比较计算机等级考试
顺序表的初始化、删除、插入计算机等级考试
C 中强制转换函数总结计算机等级考试
计算机二级辅导:C 内存泄漏检测拾遗计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛