当前位置:首页 > 博客 > 笔记 > 软考中级-软件设计师-笔记-数据表示

软考中级-软件设计师-笔记-数据表示

RWYQ阿伟2025-03-15笔记3400

        各种数值在计算机中表示的形式称为机器数。采用二进制计数值。数的符号用0和1表示。0代表正数,1代表复数。小数点隐含不占位置。

        机器数有无符号和带符号之分。无符号表示正数,机器数中没有符号位。小数点在最低位之后表示纯整数。在最高位之前表示纯小数。带符号数,机器数最高位表示正、负符号位,其余位表示数值。

        带符号机器数可采用原码、反码和补码等不同编码方法。机器数的编码方法称为码制。

原码

        原码表示法

        数值$ X $的原码记为$ [X]_{原} $,如果机器的字长为$ n $(采用$ n $个二进制位表示数据),原码定义如下:

        若$ X $为纯整数,则:

$$ [X]_{原} =\left\{\begin{matrix} X & 0\le X \le 2^{n-1} -1\\ 2^{n-1}+|X| & -(2^{n-1} -1) \le X \le 0\end{matrix}\right. $$

        若$ X $为纯小数,则:

$$ [X]_{原} =\left\{\begin{matrix} X & 0\le X \le 1\\ 2^{0}+|X| & -1 \le X \le 0\end{matrix}\right. $$

        假设$ n=8 $,有8个二进制位表示数据。第一位是符号位,0为正,1为负。后面表示数据。

        如果是纯整数,小数点在最后。纯小数的话,小数点在符号位之后数据位之前。

        例子:给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的原码表示:

$$ [+1]_{原} =00000001 $$

$$ [-1]_{原} =10000001 $$

$$ [+127]_{原} =01111111 $$

$$ [-127]_{原} =11111111 $$

$$ [+45]_{原} =00101101 $$

$$ [-45]_{原} =10101101 $$

$$ [+0.5]_{原} =01000000 $$

$$ [-0.5]_{原} =11000000 $$

反码

        反码表示法

        公式就没必要写了。正数的话和原码一样。负数的话,原码所有位取反(除了符号位)。

        假设$ n=8 $,给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的反码表示:

$$ [+1]_{原} =00000001 $$

$$ [-1]_{原} =11111110 $$

$$ [+127]_{原} =01111111 $$

$$ [-127]_{原} =10000000 $$

$$ [+45]_{原} =00101101 $$

$$ [-45]_{原} =11010010 $$

$$ [+0.5]_{原} =01000000 $$

$$ [-0.5]_{原} =10111111 $$

补码

        补码表示法。

        正数和原码表示法一样,负数是反码表示法+1(除了符号位)。

        假设$ n=8 $,给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的补码表示:

$$ [+1]_{原} =00000001 $$

$$ [-1]_{原} =11111111 $$

$$ [+127]_{原} =01111111 $$

$$ [-127]_{原} =10000001 $$

$$ [+45]_{原} =00101101 $$

$$ [-45]_{原} =11010011 $$

$$ [+0.5]_{原} =01000000 $$

$$ [-0.5]_{原} =11000000 $$

移码

        移码表示法

        移码表示法是在数$ X $上增加一共偏移量定义。常常用于表示浮点数中的阶码。这里规定的偏移量有不同的方案,比如IEEE754标准规定浮点数中指数域编码值的偏移量$ 2^{n-1}-1  $。

        假设$ n=8 $,偏移量$ 2^{n-1}$,给出+1,-1,+127,-127,+45,-45,+0,-0的补码表示:

$$ [+1]_{原} =10000001 $$

$$ [-1]_{原} =01111111 $$

$$ [+127]_{原} =11111111 $$

$$ [-127]_{原} =00000001 $$

$$ [+45]_{原} =10101101 $$

$$ [-45]_{原} =01010011 $$

$$ [+0]_{原} =10000000 $$

$$ [-0]_{原} =10000000 $$

        在偏移$ 2^{n-1} $情况下,只要将补码符号位取反就可以获得移码表示。

二进制,十进制和十六进制转化

        这里写一个我习惯的方法。

        假设$ n=8 $,各个位对应的数据如下

二进制

0

0

0

0

0

0

0

0

十进制

128

64

32

16

8

4

2

1

十六进制

0~F

0~F

        先说二进制和十进制的转换。

        每个二进制位对应一个十进制数。

        假设写出数字45的二进制数。

        先将数字拆解,由表里的十进制数相加的形式。

        因为$ 45=32+8+4+1 $

        对应二进制位取1,其余位取0。

        所以45的二进制形式为——00101101。

        和十六进制的转换。

        每四个二进制位对应一个十六进制位。四位四位分开。

        假设写出45的十六进制形式。

        45的二进制形式0010 1101,四位四位分开。

        前四位对应十进制是数字2

        后四位对应十进制是数字13

        分别转换十六进制,2是2,13是D

        所以45的十六进制形式为——0x2D。

        我习惯写这样一个表,二进制十进制十六进制相互转换一目了然。

扫描二维码推送至手机访问。

版权声明:本文由阿伟的笔记本发布,如需转载请注明出处。

本文链接:http://www.awnotebook.com/post/25.html

标签: 笔记软考

“软考中级-软件设计师-笔记-数据表示” 的相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。