计算机组成原理-补充知识点


C语言数据转换时应注意的问题:

  1. 有符号数和无符号数之间的转换。例,由signed型转等长unsigned型数据时,符号位成为数据的一部分,即负数转换位无符号数时,数值将发生变化。同理,由unsigned转换为signed时最高位为符号位,也可能会发生数值变化。

    short a = -10; //二进制形式 1111 1111 1111 0110
    printf("%d\n",a); // -10
    unsigned short b = a; //二进制形式 1111 1111 1111 0110
    printf("%d",b);	//65526
  2. 数据的截取与保留。当一个浮点数转换为整数时,浮点数的小数部分全部舍去,并按整数形式存储。但浮点数的整数部分不能超过整形数允许的最大范围,否则溢出。

    float f = -10.120;
    short s = f;
    printf("%d",s);//-10
  3. 数据转换中的精度丢失。四舍五入会丢失一些精度,截去小数也会丢失一些精度。此外,数据由long型转换为flaot型或double型时,有可能在存储时不能准确地表示该长整数的有效数字,精度也会受到影响。

  4. 精度转换结果的不确定性。当较长的整数转换为较短的整数时,要将高位截去。例,long型转换为short型,只将低16位送去,这就会产生很大的误差。

计算机的数值数据是否都是二进制数

在计算机内部,数值表示由以下两大类。

  1. 直接用二进制数表示。分为有符号数和无符号数,有符号数又分为定点数表示和浮点数表示。无符号数用来表示无符号整数(如地址等信息)。
  2. 二进制编码的十进制数,一般采用BCD码,用来表示整数。

计算机中数值数据虽然都用二进制,但不完全都是二进制,也有用十进制表示。


文章作者: LsWorld
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LsWorld !
评论
  目录