• 计算机中的真值和机器数


    真值(即:带有正负号的数值是真值,用0或1来表示正负号的数值是机器数,例如:-10011为真值,110011为机器数)

    以下X表示数据的真值。

    1. 原码表示法

    最简单且直观的机器数表示法,其最高位为符号位(0为正,1为负),数值部分与真值的数值相同

    设X为纯小数,一位符号位,n个数值位,则

    [X]
    {
    X                  0=<X<=1-2n-1

    1-X=1+|X|             -(1-2n-1)=<X<=0

     例如:x=-0.1001,那么先把它转化成机器数为:1.1001

     根据公式:[X]=1-X=1-(-0.1001)=1+0.1001=1.1001=1+|-0.1001|

         [+0.8125]=(0.1101000)2
        [-0.8125]=1-(-0.8125)=(1.0000000)2+(0.1101000)2=(1.1101000)2

    设X为纯整数,一位符号位,n个数值位,则

    [X]
    {
    X                         0=<X<=2n-1

    2nX=2n+|X|           -(2n-1)=<X<=0

       例如:机器字长n=8
       [+35]=(00100011)2
       [-35]=27-(-35)=(10000000)2+(00100011)2=(10100011)
    2

    2.补码表示法

        变形补码:即用两个二进制位来表示数字的符号位,其余与补码相同。变形补码,用"00"表示正,用"11"表示负,也称为模4的补码。

        用变形补码进行加减运算时,当运算结果的符号位出现"01"或者"10"时,则表示产生溢出。变形补码的最高位(第一个符号位)总是表示正确的符号,

        比如"00"、 "01"分别表示     正数、正溢出(上溢),"11"、"10"表示负数、负溢出(下溢)。

    1、产生01的情况:   补码:    0 111+ 0 010----1 001

        两个正数相加出现了负数,明显有误,就是说此时产生了上溢出(注:补码运算时符号位也参与运算)

                         变形补码:    00 111+ 00 010----01 001

         此时读数时,由于左边的符号位是0,所以表示正数,读成+9,而不像模二补码中变成了-7

    2、产生10的情况:   补码:   1 001+ 1 010---- 10 011

        溢出一位后,结果变成了0 011,两个负数相加出现了正数,明显有误,就是说此时产生了下溢出(注:补码运算时符号位也参与运算)

                         变形补码:    11 001+ 11 010----110 011

        溢出一位后,结果变成了10 011,此时读数时,由于左边的符号位是1,所以表示负数,读成-19,而不像模二补码中变成了+3

        (注:产生01和10时,读数时右边那一位符号也要算在数字里面)


       

  • 相关阅读:
    Linux_DNS服务器
    Linux_DNS服务器
    Linux_FTP服务器
    Linux_FTP服务器
    Linux_DHCP&DHCP Relay
    分布式内存存储式元数据服务的构建
    如何提高分布式系统的可观察性:Insight Tool的引入
    论分布式系统中Metric框架的设计
    分布式存储系统关于GDPR条例中的数据清除原则
    Pipeline并行处理模型
  • 原文地址:https://www.cnblogs.com/-rfq/p/5939471.html
Copyright © 2020-2023  润新知