计算机组成原理二:计算机数值数据的表现形式

一:计算机数制
计算机可以处理的数据包括数值型和非数值型可是计算机只能识别二进制数,但是为了使用方便,使用计算机时通常会使用8进制和10进制以及16进制等数制.
这些数制之间可以相互转换,而转换主要是通过位权值与基数来实现的.
二进制中0为无效位,1为有效位.
基数:数制中的一个整数数字,在转换成其它数制时使用,通常基数就是当前数制的取值范围+1.
位权值:表示当前数制中每一个位的实际值,比如100010第一位的位权值为0.0是没有位权值得
数制转换:
1):二进制转换其他进制:(用2乘以位权值然后相机,无效位0不计算,二进制从右向左为低位到高位)
   10进制
(110011.101)2 =2的负三次方+2的负1次方+2的0次方+2的1次方+2的4次方+2的五次方 = 51.625
    8进制(因为2的三次方为8,所以二进制的整数部分从低位到高位每三位为一个8进制数,不足高位补0,小数部分从最高位开始,每
三位为一个8进制数,不足低位补0)
(1101111.10101)2 = 整数部分(111|101|001)小数部分(101|010)在按照10进制的方式算出
    16进制(因为2的四次方为16,所以二进制的整数部分从低位到高位每四位为一个16进制数,不足高位补0,小数部分从最高位开始,每
四位为一个16进制数,不足低位补0)
(1101111.10101)2 = 整数部分(1111|0110)小数部分(1010|1000)在按照10进制的方式算出
2):10进制转换其他进制(10进制转换为其他进制时,整数与小数分别转换,整数采用的是除基求余余数按照低位排,小数采用的是
乘基取整,按照高位来排)
   注:这个基数指的是要转换数制的基数,如8进制就是除以8.
     2进制
     (116.8125)10=整数部分(1110100)小数部分(1101)
     其他进制除了基数不同其他一样
二: 机器数
机器数指的是一个数值(数)在计算机中的二进制表示形式.数分为2种,带符号的和不带符号的,所以机器数规定,当前表示一个数
的二进制机器数的最高位为符号,"+"为0,"-"为1.比如数+3,如果计算机的字长(当前计算机单位时间内处理和存放的二进制数的
位长度)为8位,转换成二进制数就是11因为字长为8所以高位补0符号位为0,所以+3的机器数为00000011,如果是-3最高位符号位为1  
即10000011
三: 真值
真值就是机器数所对应的数的真值.
因为机器数的最高位为符号位,所以如果直接将机器数转换为数值就会不等于真正的数值.例如符号数10000011,最高位1代表"-",
其他部分00000011为3它的真值是-3不是131
三: 原码,反码,补码
1): 原码,反码,补码就是机器数的编码和表示形式.
2):原码规定左边第一位为符号位其余为数值位,这样任何的原码都是第一位为符号其他位才是真值.
因为原码规定的第一位为符号,所以一个8字长的计算机的取值范围为1111 1111,0111 1111也就是-127到127
原码容易理解,但是不容易进行加 减运算.,原码就是机器数的直接表示形式.
3):反码一个正数的反码就是其本身,负数的反码是在这个数的原码之上,符号位不变,其他位取反.
4):补码一个正数的补码就是其本身,负数的补码实在其原码的基数上,符号位不变,其余位取反,最后+1.
之所以有了原码还要补码和反码的原因:
  因为原码补码反码都是计算机中的机器数的表现和编码形式,为什么要使用这三种形式呢.
  首先对于一个正数:比如1  它的机器数00000001也是原码的表现形式,反码和补码同样都是这样表示
  但是对于一个负数:比如-1 它的原码为10000001反码11111110补码11111111;
  所以正数的机器数原码反码和补码都是一样的表现形式,而负数原码在符号位上为1,反码在原码基数上,除了符号位其余位求反,
补码在原码基础上除了符号位其余位求反,最后位+1.
   对于人而言原码的方式好理解,但是计算机则不行,计算机要辨别符号位的话会让计算机设计负责,同时因为运算规则,减去一个数等于
加上一个数,所以只包含加法的机器就更简单了.于是计算机的运算开始向将符号位也参与运算同时只保留加法的方法.但是这样通过原码去
运算是错误的.
比如:1-1=0
现在计算机只包含加法,所以应该是1+(-1)转成机器数在用原码编码表示00000001+10000001=10000010 = -2
所以如果将符号位也参与运算并且采用原码结果是不正确的.
于是使用了反码的编码形式
比如:1-1=0
1+(-1)转成原码=>00000001+10000001转成反码=>00000001+111111110=11111111在转成原码=>10000000=-0
结果虽然正确但是"-0"还是有误差.
于是补码出现,解决了这俩个编码的所有问题,现在的计算机中机器数采用的就是补码的编码和表现形式.
比如:1-1=0
1+(-1)转成原码=>00000001+10000001转成补码码=>00000001+111111111=00000000在转成原码=>00000000这样结果是完全正确的
所以计算机现在都采用补码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值