数据进制的转换以及定点数的表示(原码、补码、反码、移码)

本文详细介绍了不同进制间的转换方法,包括二进制、八进制、十六进制与十进制的互转,并讲解了定点数在计算机中的表示方式,包括原码、反码、补码和移码的概念。

一、不同进制之间的转换

      首先,要介绍一下基数和位权,所谓基数就是在进位计数法中,每个数位所能用到的不同数码的个数,如十进制的基数为10(0~9)。每个数码所表示的数值等于该数码本身乘以一个与它所在数位有关的常数,这个常数则称为位权。下面将详细介绍不同进制之间的转换:
      (1)二进制转化为八进制和十六进制
      对于一个二进制混合数,在转换时应以小数点为界。其整数部分,从左往右数,将一串二进制数分为3位(八进制)一组或4位(十六进制)一组,在数的最左边适应性补“0”;对于小数部分,从右往左数,也是每三位一组或四位一组,最右边适应性补“0”。比如:
      一个二进制数1111000010.01101分别转换为八进制和十六进制。
      转换为八进制为:001    111    000    010    .   011    010,对应八进制数为1702.32
      转换为十六进制为:0011    1100    0010    .   0110    1000,对应十六进制数为3C2.68
      当然八进制或者十六进制转化为二进制也比较简单,只需要将每一位改为3位或4位二进制就可以了。而八进制与十六进制的互相转换则可以通过二进制过渡。
      (2)任意进制转换为十进制
      将任意进制的数各个数码与他们的权值相乘,再把乘积相加就可。
      (3)十进制转换为任意进制
      一个十进制转化为任意进制通常采用基数乘除法。这种转换方法对于十进制的整数部分与小数部分分别处理,对于整数部分采用除基取余法,对于小数部分采用乘基取整法。比如下面一个例子:
      将十进制123.6875转换成二进制数。
      整数部分,采用除基取余法,整数部分先除基取余,最先得到的余数为数的最低位,最后取得的余数为数的最高位,直到商为0时结束。
在这里插入图片描述
      故整数部分转换为二进制为1111011
      小数部分,采用乘基取整法,小数部分乘基取整,最先取得的整数为最高位,最后取得的整数位最低位,乘积为0时结束。在这里插入图片描述
      故小数部分转化为二进制为:0.1011
      所以123.6875转换为二进制为1111011.1011

二、定点数的表示

      数在计算机中的表示形式统称为机器数。计算机中处理数据及运算都是采用二进制。实用的数据有正数和负数,因为计算机只能表示0、1两种状态,数据的正号“+”或负号“-”,在计算机里就用一位二进制的0或1来区别,通常放在最高位,成为符号位。 符号位数值化之后,为能方便的对机器数进行算术运算、提高运算速度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器数表示方法有:原码、反码、补码和移码,下面就分别介绍一下它们的表示方法。
      (1)原码
      原码是一种比较简单、直观的机器数表示法,用最高位表示符号位,其余的各位表示数的绝对值。比如3的原码是:0 000 0011 ,                                          -3的原码是:1 000 0011
      (2)补码
      正数的补码与原码相同,负数的补码,符号位不变,将数值部分按位取反,末位加1。比如-3的补码是:1 111 1101
      (3)反码
      正数的反码和原码相同,负数的反码,符号位不变,数值位按位取反,比如-3的反码是: 1 111 1100
      (4)移码
      移码就是在真值上加上一个常数,通常这个常熟取2^n
      (5)注意
      对于反码和原码,0的表示不唯一,对于补码和反码0的表示唯一。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值