当前位置: 首页 > news >正文

【计算机组成原理】原码 反码 补码 移码的转换

原码 反码 补码 移码的转换

这三种机器码都是二进制数据的表现形式,可以表现正数和负数。

原码是可以直接表现出数据的正负和大小。

正数的原码、反码和补码都是相同的。

反码用于原码和补码的转换的功能。

而补码可以在计算机硬件内更好地实现一些带负号的运算。

使用补码可以使用8位二进制表示-27 ~27-1 的整数范围。

移码可以表现出数值的大小。

简记:符号不变,数值取反 ,末位加一,符号取反。

一、原码

原码由符号位和数值位表示。符号位为最左边的位,为0表示正数,为1表示负数。

最左边是符号位为0,剩余7位是数值位。

十进制整数14使用原码表示为:

# 最左边是符号位为0,剩余7位是数值位。
0000 1110

十进制整数-14使用原码表示:

# 最左边是符号位为1,剩余7位是数值位。
1000 1110

二、原码转反码

反码也是由符号位和数值位表示。符号位为最左边的位,为0表示正数,为1表示负数。

由于正数的原码与反码相同,这里仅讨论负数的转化。

符号位不变,数值位取反。

十进制整数-14使用原码表示:

# 最左边是符号位为1,剩余7位是数值位。
1000 1110

十进制整数-14使用反码表示:

# 最左边是符号位为1,剩余7位是数值位相较于原码取反。
1111 0001

三、原码转反码转补码

补码也是由符号位和数值位表示。符号位为最左边的位,为0表示正数,为1表示负数。

由于正数的原码与补码相同,这里仅讨论负数的转化。

符号不变,数值取反 ,末位加一。

十进制整数-14使用原码表示:

# 最左边是符号位为1,剩余7位是数值位。
1000 1110

十进制整数-14使用反码表示:

# 最左边是符号位为1,剩余7位是数值位相较于原码取反。
1111 0001

十进制整数-14使用补码表示:

# 最左边是符号位为1,剩余7位是数值位相较于补码加一。
1111 0010

四、原码转反码转补码转移码

移码可以直观的反应出其大小。

正数只需要进行末位加一操作。

负数需要进行四次操作:

符号不变,数值取反 ,末位加一,符号取反。

十进制整数-14使用原码表示:

# 最左边是符号位不变,剩余7位是数值位。
1000 1110

十进制整数-14使用反码表示:

# 最左边是符号位不变,剩余7位是数值位相较于原码取反。
1111 0001

十进制整数-14使用补码表示:

# 最左边是符号位不变,剩余7位是数值位相较于反码加一。
1111 0010

十进制整数-14使用移码表示:

# 最左边是符号位相较于补码取反,剩余7位是数值位不变。
0111 0010

各种码表示的数值大小

这里由于0有两种表现形式,因此将-0表示为-128,这样数据范围就为-128~127。

十进制(原码)原码反码补码移码
-0(-128)1000 00001111 11111000 00000000 0000
-2^7-11111 11111000 00001000 00010000 0001
-2^7-21111 11101000 00011000 00100000 0002
-21000 00101111 11011111 11100111 1110
-11000 00011111 11101111 11110111 1111
+00000 00000000 00000000 00001000 0000
10000 00010000 00010000 00011000 0001
20000 00100000 00100000 00101000 0010
2^7-20111 11100111 11100111 11101111 1110
2^7-10111 11110111 11110111 11111111 1111

相关文章:

  • springboot将数据库中的数据导入到xml文件中
  • Overlay 网络 — VxLAN 应用场景
  • C/C++ | 预处理详解
  • 深入理解pg wal日志
  • 案例1:人生重开模拟器(Python)——直接带你入门~
  • C++ 11 新玩法
  • JavaEE中的JUC的常见的类
  • 【C++入门到实战,看这篇博客总结足够了】
  • 核酸检测多少人为一组混检合适?
  • JavaWeb学习之BS/CS架构及tomcat容器项目部署
  • Python入门必会技巧:pycharm配置Python解释器【2022最新】
  • Zookeeper集群搭建(Linux环境)
  • 今天面试被问到的问题
  • 【JAVAEE框架】SpringMVC 项目起步讲解
  • 【牛客-算法】NC57 反转数字
  • 【译】JS基础算法脚本:字符串结尾
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【翻译】babel对TC39装饰器草案的实现
  • 10个最佳ES6特性 ES7与ES8的特性
  • canvas 绘制双线技巧
  • Fundebug计费标准解释:事件数是如何定义的?
  • interface和setter,getter
  • JavaScript 一些 DOM 的知识点
  • JavaScript设计模式与开发实践系列之策略模式
  • JAVA并发编程--1.基础概念
  • jQuery(一)
  • JS+CSS实现数字滚动
  • Python学习之路16-使用API
  • 笨办法学C 练习34:动态数组
  • 解析 Webpack中import、require、按需加载的执行过程
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 三分钟教你同步 Visual Studio Code 设置
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 通信类
  • 转载:[译] 内容加速黑科技趣谈
  • ​第20课 在Android Native开发中加入新的C++类
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • !!Dom4j 学习笔记
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转载)从 Java 代码到 Java 堆
  • .htaccess配置重写url引擎
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • ??在JSP中,java和JavaScript如何交互?
  • @NestedConfigurationProperty 注解用法
  • @SpringBootApplication 包含的三个注解及其含义
  • [2023年]-hadoop面试真题(一)
  • [30期] 我的学习方法
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略