个人随笔
目录
二、数据表示(原码、反码、补码)
2019-08-14 23:40:42

本博文介绍了数值在机算计中的表示形式以及原码、反码、补码的概念和定义。

定义

各种数值在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用0和1表示,小数点则隐含,表示不占位置。机器数的对应的实际数值称为数的真值。

机器数有无符号数和带符号数之分。无符号数表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高维护之前,则是纯小数。对于带符号数,机器数的最高位是表示正负的符号位,其余位表示数值。

为了便于运算,带符号的机器数可以采用原码、反码和补码等不同额编码方式,机器数的这些编码方法称为码zhi。

1、原码表示法

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

[+1]原=0 0000001 [-1]原=1 0000001
[+127]原= 0 1111111 [-127]原= 1 1111111
[+45]原= 0 0101101 [-45]原= 1 0101101

2、反码表示法

在反码表示法中,最高位是符号位,0表示正号,1表示负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反。请留意是绝对值按位求反,也就是不包括符号位,比如[-127]原=11111111,那么反码就是绝对值取反[-127]反=10000000.
数值0的反码有两种表示形式:[+0]反=0 0000000,[-0]反=1 1111111.

[+1]反=0 0000001 [-1]反=1 1111110
[+127]反= 0 1111111 [-127]反= 1 0000000
[+45]反= 0 0101101 [-45]反= 1 1010010

3、补码表示法

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

[+1]补=0 0000001 [-1]补=1 1111111
[+127]补= 0 1111111 [-127]补= 1 0000001
[+45]补= 0 0101101 [-45]补= 1 1010011

当机器字长为n时,定点数,也就是小数点的位置不变的数的补码和移码可表示2的n次方个数,但是其原码和反码只能表示2的n次方减去1个数,也就是少一个数,原因是0占用了两个编码。

4、总结

首先判断符号位(最高位),为 0,表示该数为正数
正数的原码、反码、补码不变
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

 811

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2