• 计算机内数字的表示


    计算机中的数字有三种表示:无符号数、补码(带符号数)、浮点数

    信息的存储与寻址:计算机中将字节作为最小可寻址单元。而字节的排列顺序分大端法和小端法两种。大端法就是指将最高位放在最前面的存储方式,而小端法则是将最低位放在最前面的存储方式。

    C语言中的移位运算:

    • 左移:将x向左移动k位,丢弃最高的k位,并在右端补k个0
    • 逻辑右移:将x向右移k位后,在左端补k个0
    • 算术右移:将x向右移k位后,在左端补k个最高有效位的值。

    带符号数与无符号数的转换:

    带符号数->无符号数:若x<0,则返回x+2w

              若x>=0,则返回x

    无符号数->带符号数:若x<=TMax,则返回x

              若x>TMax,则返回x-2w

    整数的扩展:将一个较小类型的数,转换为较大类型

          无符号数,在数字的二进制表示的开头添0,这被称为零扩展

          带符号数,在数字的二进制表示的开头添加最高有效位的值符号扩

    整数的截断:将一个较大类型的数,转换为较小类型

          无符号数,先将数字的二进制表示直接转换成对应的无符号数,然后再用这个无符号数进行模2的k次方运算

          带符号数,先将数字的二进制表示直接转换成对应的无符号数,然后再用这个无符号数进行模2的k次方运算,然后经过模运算后得到的无符号转转换成带符号数。 

    无符号数加法:若x+y≥2w(溢出),则为x+y-2w;否则为x+y

           溢出判断:令s=x+y,当且仅当s<x或者s<y时,发生了溢出

    无符号数的非:若x=0,则为x,否则为2w-x

    带符号数加法:若x+y≥2w-1,则为x+y-2w(正溢出);若x+y<-2w-1,则为x+y+2w(负溢出);否则为x+y

           溢出判断:令s=x+y,当且仅当x>0,y>0,但s<=0时,发生了正溢出;当且仅当x<0,y<0,但s>=0时,发生了负溢出

    带符号数的非:若x=TMIN,则为x,否则为-x

    无符号数的乘法:(x*y) mod 2w

    带符号数的乘法:U2T((x*y) mod 2w)

    乘以2的幂:对于无符号数,C表达式x<<k产生x*2k的值

           对于带符号数,C表达式x<<k产生x*2k的值

    除以2的幂:无符号数处以2的幂,C表达式x>>k产生数值 floor( x/2k )

           带符号数除以2的幂,向下舍入,C表达式x>>k产生数值 floor( x/2k )

           带符号数除以2的幂,向上舍入,C表达式 ( x+(1<<k)-1)>>k 产生数值 ceil( x/2k )

    浮点数:IEEE浮点标准用V=(-1)s * M * 2E的形式来表示一个浮点数

        

    • 在规格化的表示中,exp段既不是全1,也不是全0。在这种情况下,阶码字段被解释为以偏置形式表示的有符号数。也就是说,阶码的值E=exp-Bias,其中exp是一个k位的无符号数,而Bias则等于2k-1-1(即最高位为0,其余位为1)。而尾数定义为M=1+frac。
    • 在非规格化的表示中,即阶码域位全0的形式,在这种情况下,阶码值是E=1-Bias,而尾数的值是M=frac,也就是小数字段的值。
    • 在特殊情况下,当阶码域位全1的时候,如果小数字段位全0则表示无穷大,如果小数字段不为全0则表示这不是一个数(NaN)

    浮点数的特殊值总结:

    以一个8位的浮点数为例:

     

    浮点数的舍入

    1. 向偶数舍入(即四舍五入)
    2. 向零舍入
    3. 向下舍入(相当于ceil函数)
    4. 向上舍入(相当于floor函数)

    C语言中的浮点数

    从int转换成float,数字不会溢出,但是可能被舍入。

    从int或float转换成double,因为double有更大的位数,所以能够保留精确的数值。

    从double转换成float,因为范围较小,所以值可能溢出成+∞或-∞。并且,由于精度较小,它还可能被舍入。

    从float或者都变了转换成int,值将会向零舍入。

  • 相关阅读:
    asp.net常用的javascript经典例子
    Silverlight学习之——布局系统
    TreeView数据绑定方法
    软件测试:单元测试的一些疑问
    Silverlight学习之——Deep Zoom文件格式概述
    把生活节奏调整得慢一点
    20、Windows内核函数(1)Windows驱动开发详解笔记,字符串
    24、Windows派遣函数(2)Windows驱动开发详解笔记,直接读写方式
    21、Windows内核函数(2)Windows驱动开发详解笔记,文件操作
    27、Windows内核编程,IRP的同步(1)
  • 原文地址:https://www.cnblogs.com/TheFutureIsNow/p/10760060.html
Copyright © 2020-2023  润新知