无符号数和有符号数(二) -- 反码、移码表示法
来源:互联网 发布:哔哩哔哩直播软件下载 编辑:程序博客网 时间:2024/05/16 18:36
一、反码表示:
整数:
x 为真值, 正数的反码为符号位加x, 负数的反码为 符号位加 !x。
例如:x = +1101, 反码为:0,1101; x = -1101, 反码为:1,0010.
小数:
举例: x = + 0.1101, 反码为:0.1101; x = -0.1101, 反码为:1,0010.
对原码、补码、反码三种机器数表示总结:
1, 最高位为符号位, 书写上用“,” 或者 “.”将符号位和数值位隔开。
2, 对于正数, 原码 = 反码 = 补码。
3,对于负数, 符号位为 1, 数值位如果是补码则取反加一, 如果是反码则取反就ok。
4, 三种方式中只有补码的0表示只有一种, 原码和反码中0的表示方式都不止一种方式。
5, 这三种方式都是机器数的表示方法, 也就是说都收到机器本身的字长影响。
二、移码表示:
为什么会引进移码表示呢?
补码在计算机运算里面运用到非常广泛, 因为它能将减法转换城加法, 由此可以简化运算;
但是补码很难直接判断大小, 如下:
可以看出 补码形式的负数是要大于正数的(在计算机里面“,”和“.”都不会存储的, 都是人为约定的)。
如果将x + 2^n,n 为数值位位数; 那么结果如下图
这样就很容易判断大小了。 这种方式称为移码表示法。
移码的定义:
注意上面这个式子, 它不像原码、反码、补码表示一样分是否为整数小数, 是否正负;
移码在计算机中一般是用在小数的阶码中, 基本上都是整数。 无论是正整数还是负整数, 移码的表示方法都是这个。
举例:
x = 10100, 它的移码为:2^5 + 10100 = 1,10100
x = -10100, 它的移码为:2^5 - 10100 = 0,01100
补码与移码的比较:
x = + 10100, 它的移码为:1,10100, 它的补码为:0,10100
x = - 10100, 它的移码为:0,01100, 它的补码为:1,01100
从上面的比较可以看出,移码与补码就只有符号位相反, 也就是说只要加一个非门就可以进行移码与补码的转换。
移码的特点:
当 x = 0 时, x 的移码为:100000(假设机器字长为 5 位) 从这里可以看出移码和反码表示 0 都只有一种方式。
·当 n = 5 时,最小的真值为 -2^5 , 即移码全部为 0 时。可见移码表示最小真值时移码全部为 0 。
用移码表示阶码时能方便的判断大小。
原码、补码、反码、移码 小结:
原码表示法就是带符号的绝对值表示法, 如果为正数:符号位,x; 如果为负数:符号位,x 的绝对值。
小数就是“,” 变成“.”。
补码表示法:如果为正数与原码一样, 如果为负数, 符号位,!x+1。
反码表示法:如果为正数与原码一样, 如果为负数,符号位,!x。
移码表示法:除了符号位与补码相反, 数值位都一样。
- 无符号数和有符号数(二) -- 反码、移码表示法
- 有符号和无符号数表示
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 无符号数和有符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 无符号数和有符号数(一) -- 原码表示法和补码表示法
- 原码、反码、补码、有符号数和无符号数运算
- C语言系列(二)有符号数和无符号数详解
- C语言系列(二)有符号数和无符号数详解
- 有符号和无符号数
- 有符号和无符号数运算
- 有符号数表示
- js 回调函数的简单使用
- python3.5open cv的安装
- BaseControllerTest
- 推荐系统中基于深度学习的混合协同过滤模型
- MySql终端命令
- 无符号数和有符号数(二) -- 反码、移码表示法
- Vue开发:顶端粘滞效果实现
- 安卓“倒计时”的代码
- 599. Minimum Index Sum of Two Lists
- python连接mysql数据库 案例 查看数据 注意细节
- Hadoop学习
- makefile中.PHNOY的用法
- Android 实现fragment懒加载
- Creat_average_shape_model.hdev例程相关学习(一)