原码,补码,反码,移码
来源:互联网 发布:ubuntu wifi 热点 编辑:程序博客网 时间:2024/06/05 13:34
为什么有这些码
原码
定义机器字长为n,若数值X是纯整数
若数值X是纯小数,对纯小数的原码计算是先将其转换为二进制(必须的~)
例:若机器字长为8,则:
[+1]原=0 0000001 [-1]原=1 0000001 [+7]原=0 0000111 [+127]=0 1111111
[-127]原=1 1111111 [-7]原=1 1111000 [+0.5]原=0♢1000000 [-0.5]原=1♢1000000
对于0来说,其原码有两种表示方式:[+0]原=0 0000000,[-0]原=1 00000000
反码
机器数的反码可由原码得到。若机器数为正数,则其反码与原码一样;如果机器数为负数,则其反码是对它的原码(除符号位外)各位取反而得到的。也可用公式表示,若X是纯整数,则:
若X是纯小数,则:
例:若机器字长为8,则:
[+1]反=0 0000001 [-1]反=1 1111110 [+7]反=0 0000111 [-7]反=1 1111000 [+127]反=0 1111111 [-127]反=1 0000000
[+0.5]反=0♢1000000 [-0.5]反=1♢0111111
对于0来说,反码也有两种表示方式:[+0]反=0 0000000 [-0]反=1 1111111
补码
机器数的补码可由原码得到。若机器数为正数,则其补码与原码一样;如果机器数为负数,则其补码是对它的原码(除符号位外)各位取反,再加1而得到的(也就是对其反码再加1)。也可用公式表示,若X是纯整数,则:
若X是纯小数,则:
例:若机器字长为8,则:
[+1]补=0 0000001 [-1]补=1 1111111 [+7]补=0 0000111 [-7]补=1 1111001 [+127]补=0 1111111 [-127]补=1 0000001
[+0.5]补=0♢1000000 [-0.5]补=1♢1000000
对于0来说,补码有唯一的表示方式:[+0]补=0 0000000 [-0]补=0 0000000
移码
机器数的移码是在数X上增加一个偏移量来定义的,它常用于表示浮点数中的阶码。移码和补码的关系是符号位互为反码。如果机器字长为n,规定该偏移量为2n-1,移码定义如下:
若X是纯整数,[X]移=2n-1+X (-2n-1≤X<2n-1)
若X是纯小数,[X]移=1+X (-1≤X<1)
例:若机器字长为8,则:
[+1]移=1 0000001 [-1]移=0 1111111 [+7]移=1 0000111 [-7]移=0 1111001 [+127]移=1 1111111 [-127]移=0 0000001
[+0.5]移=1♢1000000 [-0.5]移=0♢1000000
对于0来说,补码有唯一的表示方式:[+0]移=1 0000000 [-0]移=1 0000000
由于四种数据表示相互之间都存在一定的转换关系,因为推荐先求其原码,然后再根据该关系转换到该码制。
- 原码、反码、补码、移码
- 原码、反码、补码、移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码,补码,反码,移码
- 原码、反码、补码、移码
- 原码 补码 反码 移码
- 原码反码补码移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 原码 反码 补码 移码
- 原码、反码、补码、移码
- 原码,补码,反码,移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 原码,反码,补码,移码
- Ext学习06util包
- 安装ftp碰到的问题及解决方法
- C#--I/O流操作文本文件之StreamWrite类和StreamReader类
- IoC模式
- 交互设计的KISS原则
- 原码,补码,反码,移码
- 非常值得学习和借鉴的电商项目shop++
- C++使用ADO存取图片
- LC_CTYPE: cannot change locale (UTF-8) error
- Ubuntu 使用VI
- 程序员求职面试心经40条——谨记原则
- IOS 模糊掉图片指定区域
- 算法实验二:实习和工作
- 【剑指offer】面试题4替换空格