计算机数值数据的编码,计算机数值数据编码(原码,反码,补码,移码)

机器数有无符号数和带符号数之分。无符号数表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位以后,则是纯整数;若约定小数点的位置在机器数的最高位以前,则是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其他位置表示数值。如果小数点的位置在机器数的最低位以后,则是纯整数;如果约定小数点的位置在机器数的最高位以前(符号位以后),则是纯小数。编码

下面是带符号的机器数的原码、反码、补码、移码的编码方法:3d

.原码表示法:数值X的原码记为[X]原,若是机器字长为n(即采用n个二进制位表示数据),则原码的定义以下:

a98328b87f4c48d3b44670f231eaa59a.gif

例一:若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的原码表示。blog

[+1]原=0 0000001 [-1]原=1 0000001class

[+127]原=0 1111111      [-127]原=1 1111111基础

[+45]原=0 0101101 [-45]原=1 0101101变量

[+0.5]原=0 。1000000 [-0.5]原=1 。1000000二进制

(“。”表示的是小数点的位置)方法

在原码表示法中,最高位是符号位,0表示符号为正,1表示为负,其他的n-1位表示数的绝对值。数值0的原码有两种形式:  [+0]原=0 0000000,im

[-0]原=1 0000000。d3

(2).反码表示法。数值X的反码记做[X]反,若是机器字长为n,则反码定义以下:

a98328b87f4c48d3b44670f231eaa59a.gif

例二:若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的反码表示。

[+1]反=0 0000001 [-1]反=1 1111110

[+127]反=0 1111111      [-127]反=1 0000000

[+45]反=0 0101101 [-45]反=1 1010010

[+0.5]反=0 。1000000 [-0.5]反=1 。0111111

(“。”表示的是小数点的位置)

在反码表示法中,最高位是符号位,0表示符号为正,1表示为负。其中正数的反码与其原码相同,负数的反码是其绝对值按位求反。数值0的反码有两种形式:  [+0]反=0 0000000,

[-0]反=1 1111111。

(3)补码表示法。数值X的补码记做[X]补,若是机器字长为n,则补码定义以下:

a98328b87f4c48d3b44670f231eaa59a.gif

例三:若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的反码表示。

[+1]补=0 0000001 [-1]补=1 1111111

[+127]补=0 1111111      [-127]补=1 0000001

[+45]补=0 0101101 [-45]补=1 1010011

[+0.5]补=0 。1000000 [-0.5]补=1 。1000000

(“。”表示的是小数点的位置)

在补码表示法中,最高位是符号位,0表示符号为正,1表示为负。其中正数的补码与其原码相同,负数的反码则等于其反码的末尾加1。数值0的补码有惟一的编码:  [+0]补=0 0000000,[-0]补=0 0000000。

(4)移码表示法:移码表示法是在数X上增长一个偏移变量来定义的,经常使用于表示浮点数中的阶码。若是机器字长为n,规定偏移量为2^(n-1),则移码定义以下:

若X是纯整数,则[X]移=2^(n-1)+X(-2^(n-1)<=X<=2^(n-1));若X是纯小数,则[X]移=1+X(-1<=X<=1)。

[+1]移=1 0000001 [-1]移=0 1111111

[+127]移=1 1111111      [-127]移=0 0000001

[+45]移=1 0101101 [-45]移=0 1010011

[+0.5]移=1 。1000000 [-0.5]移=0 。1000000

[+0]移=1 0000000 [-0]移=1 0000000

实际上,在偏移2^(n-1)的状况下,只要将补码的符号位取反即可得到相应的移码表示。

总结:机器数的原码表示法能够看作以二进制表示,注意在负数的状况下须要将符号位置为1。而反码表示法在整数的状况下是和原码同样的,在负数的状况下,是将原码中除了符号位①之外的全部位置都变为相反的(1变成0,0变成1)。补码表示法在整数的状况下是和原码、反码同样的,而负数状况下是在最后一位加1(注意,是加1,而不是将最后一位变成1)。移码表示法是在补码的基础上不管正负,都把符号位变为相反的(1变成0,0变成1)。

注:①关于符号位的概念开头就讲过了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值