嵌入式硬件篇---原码、补码、反码


文章目录

  • 前言
  • 简介
  • 八进制原码、反码、补码
    • 1. 原码
      • 规则
      • 示例
      • 问题
    • 2. 反码
      • 规则
      • 示例
      • 问题
    • 3. 补码
      • 规则
      • 示例
      • 优点
    • 4. 补码的运算
    • 5. 总结
  • 十六进制原码、反码、补码
    • 1. 十六进制的基本概念
    • 2. 十六进制的原码
      • 规则
      • 示例
    • 3. 十六进制的反码
      • 规则
      • 示例
    • 4. 十六进制的补码
      • 规则
      • 示例
    • 5. 十六进制补码的运算
      • 示例:计算 5 + (-3)
    • 6. 十六进制补码的范围
    • 7. 总结
  • 总结


前言

以上就是今天要讲的内容,本文仅仅简单介绍了八进制、十六进制的原码、反码、补码。


简介

在计算机中,源码、补码和反码是表示有符号整数的三种方式,主要用于处理负数。下面详细介绍它们的概念和转换方法,并通过示例说明。

八进制原码、反码、补码

1. 原码

源码是最直观的表示方法,直接用最高位表示符号(0 表示正数,1 表示负数),其余位表示数值的绝对值

规则

正数:符号位为 0,数值部分为二进制绝对值

负数:符号位为 1,数值部分为二进制绝对值

示例

8 位二进制为例:

+5 的源码:00000101
-5 的源码:10000101

问题

  1. 源码的缺点是 0 有两种表示形式:00000000(+0)和 10000000(-0)。
  2. 加减法运算不方便,需要额外处理符号位。

2. 反码

反码是为了解决源码加减法的问题而提出的。正数的反码与源码相同负数的反码是对源码的数值部分逐位取反(符号位不变)

规则

正数:与源码相同。
负数:符号位为 1,数值部分逐位取反。

示例

+5 的反码:00000101(与源码相同)
-5 的反码:11111010(符号位不变,数值部分取反)

问题

  1. 反码仍然存在 +0 和 -0 的问题。
  2. 加减法运算时,最高位的进位需要循环加到最低位(称为“循环进位”),增加了复杂性。

3. 补码

补码是目前计算机中最常用的表示方法,解决了反码的问题。正数的补码与源码相同,负数的补码是对反码加 1。

规则

正数:与源码相同。
负数:符号位为 1,数值部分逐位取反后加 1。

示例

+5 的补码:00000101(与源码相同)

-5 的补码:
源码:10000101
反码:11111010
补码:11111011(反码加 1)

优点

  1. 0 只有一种表示形式:00000000。
  2. 加减法运算可以直接进行,无需额外处理符号位。
  3. 补码表示的范围比源码和反码更大。

4. 补码的运算

补码的最大优势是加减法可以直接用二进制运算完成。

示例:计算 5 + (-3)
5 的补码:00000101

-3 的补码:
源码:10000011
反码:11111100
补码:11111101

相加:

00000101 (5)
+11111101 (-3)


100000010
由于是 8 位二进制,最高位的进位被丢弃,结果为 00000010,即 2。

5. 总结

源码:直观,但加减法复杂
反码:解决了部分问题,但仍存在 +0 和 -0 的问题
补码:解决了所有问题,是现代计算机的标准表示方法。
通过补码,计算机可以高效地进行有符号整数的加减法运算,同时避免了符号处理的复杂性。

十六进制原码、反码、补码

1. 十六进制的基本概念

十六进制(Hexadecimal)使用 16 个符号表示数值:0-9 和 A-F(A=10, B=11, …, F=15)。

每个十六进制位对应 4 个二进制位。
例如,0x1A 表示二进制的 00011010。

2. 十六进制的原码

原码是数值的直接表示,最高位表示符号(0 为正,1 为负),其余位表示数值的绝对值。

规则

正数:符号位为 0,数值部分为十六进制绝对值。
负数:符号位为 1,数值部分为十六进制绝对值。

示例

假设使用 8 位十六进制数(32 位二进制),最高位为符号位:

+5 的原码:0x00000005
-5 的原码:0x80000005(最高位 8 表示符号位为 1)

3. 十六进制的反码

反码是为了解决原码加减法的问题而提出的。正数的反码与原码相同,负数的反码是对原码的数值部分逐位取反(符号位不变)。

规则

正数:与原码相同。
负数:符号位为 1,数值部分逐位取反。

示例

+5 的反码:0x00000005(与原码相同)
-5 的反码:
原码:0x80000005
数值部分取反:0x7FFFFFFA
因此,-5 的反码为:0x7FFFFFFA

4. 十六进制的补码

补码是目前计算机中最常用的表示方法,解决了反码的问题正数的补码与原码相同,负数的补码是对反码加 1。

规则

正数:与原码相同。
负数:符号位为 1,数值部分逐位取反后加 1。

示例

+5 的补码:0x00000005(与原码相同)
-5 的补码:
原码:0x80000005
反码:0x7FFFFFFA
补码:0x7FFFFFFB(反码加 1)

5. 十六进制补码的运算

补码的优势在于可以直接进行加减法运算,无需额外处理符号位。

示例:计算 5 + (-3)

5 的补码:0x00000005
-3 的补码:
原码:0x80000003
反码:0x7FFFFFFC
补码:0x7FFFFFFD

相加:

0x00000005 (5)
+0x7FFFFFFD (-3)


0x80000002
结果为 0x80000002,即 2。

6. 十六进制补码的范围

对于 32 位十六进制数(8 位十六进制):

正数范围:0x00000000 到 0x7FFFFFFF(0 到 2,147,483,647)
负数范围:0x80000000 到 0xFFFFFFFF(-2,147,483,648 到 -1)

7. 总结

原码:直接表示数值,最高位为符号位
反码:正数与原码相同,负数为原码数值部分取反
补码:正数与原码相同,负数为反码加 1
十六进制补码:与二进制补码的原理相同,只是用十六进制表示。
通过十六进制补码,计算机可以高效地进行有符号整数的加减法运算,同时避免了符号处理的复杂性。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了八进制、十六进制的原码、反码、补码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

127,【3】 buuctf [NPUCTF2020]ReadlezPHP

进入靶场 吓我一跳 查看源码 点击 审计 <?php// 定义一个名为 HelloPhp 的类&#xff0c;该类可能用于执行与日期格式化相关的操作 class HelloPhp {// 定义一个公共属性 $a&#xff0c;用于存储日期格式化的模板public $a;// 定义一个公共属性 $b&#xff0c;用于存储…

问题:通过策略模式+工厂模式+模板方法模式实现ifelse优化

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 示例&#xff1a;商城系统有会员系统&#xff0c;不同会员有不同优惠程度&#xff0c;普通会员不优惠&#xff1b;黄金会员打8折&#xff1b;白金会员优惠50元&#xff0c;再打7折&#xff1b; 问题描…

Android Studio2024版本安装环境SDK、Gradle配置

一、软件版本&#xff0c;安装包附上 &#x1f449;android-studio-2024.1.2.12-windows.exe&#x1f448; &#x1f449;百度网盘Android Studio安装包&#x1f448; &#xff08;若下载连链接失效可去百度网盘链接下载&#xff09; 二、软件安装过程 ​ ​ ​ 三、准备运行…

Leetcode - 149双周赛

目录 一、3438. 找到字符串中合法的相邻数字二、3439. 重新安排会议得到最多空余时间 I三、3440. 重新安排会议得到最多空余时间 II四、3441. 变成好标题的最少代价 一、3438. 找到字符串中合法的相邻数字 题目链接 本题有两个条件&#xff1a; 相邻数字互不相同两个数字的的…

使用 meshgrid函数绘制网格点坐标的原理与代码实现

使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中&#xff0c;meshgrid 是一个常用函数&#xff0c;用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标&#xff0c;并给出具体的代码实现和原理解析。 实现思路 …

【AI赋能】蓝耘智算平台实战指南:3步构建企业级DeepSeek智能助手

蓝耘智算平台实战指南&#xff1a;3步构建企业级DeepSeek智能助手 引言&#xff1a;AI大模型时代的算力革命 在2025年全球AI技术峰会上&#xff0c;DeepSeek-R1凭借其开源架构与实时推理能力&#xff0c;成为首个通过图灵测试的中文大模型。该模型在语言理解、跨模态交互等维…

Mac(m1)本地部署deepseek-R1模型

1. 下载安装ollama 直接下载软件&#xff0c;下载完成之后&#xff0c;安装即可&#xff0c;安装完成之后&#xff0c;命令行中可出现ollama命令 2. 在ollama官网查看需要下载的模型下载命令 1. 在官网查看deepseek对应的模型 2. 选择使用电脑配置的模型 3. copy 对应模型的安…

第七节 文件与流

基本的输入输出&#xff08;iostream&#xff09; C标准库提供了一组丰富的输入/输出功能&#xff0c;C的I/O发生在流中&#xff0c;流是字节序列。如果字节流是从设备&#xff08;键盘、磁盘驱动器、网络连接等&#xff09;流向内存&#xff0c;叫做输入操作。如果字节流是从…

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念&#xff0c;已经满足了互连两台主机之间可以进行通讯的目的&#xff0c;虽然看似简简单单几句话&#xff0c;就描述了网络概念与网络出现的目的&#xff0c;但是为了真正实现两台主机…

内网ip网段记录

1.介绍 常见的内网IP段有&#xff1a; A类&#xff1a; 10.0.0.0/8 大型企业内部网络&#xff08;如 AWS、阿里云&#xff09; 10.0.0.0 - 10.255.255.255 B类&#xff1a;172.16.0.0/12 中型企业、学校 172.16.0.0 - 172.31.255.255 C类&#xff1a;192.168.0.0/16 家庭…

SQL Server 逻辑查询处理阶段及其处理顺序

在 SQL Server 中&#xff0c;查询的执行并不是按照我们编写的 SQL 语句的顺序进行的。相反&#xff0c;SQL Server 有自己的一套逻辑处理顺序&#xff0c;这个顺序决定了查询的执行方式和结果集的生成。了解这些处理阶段和顺序对于优化查询性能和调试复杂查询非常重要。 SQL …

四、OSG学习笔记-基础图元

前一章节&#xff1a; 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码&#xff1a;CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…

性格测评小程序03搭建用户管理

目录 1 创建数据源2 搭建后台3 开通权限4 搭建启用禁用功能最终效果总结 性格测评小程序我们期望是用户先进行注册&#xff0c;注册之后使用测评功能。这样方便留存用户的联系信息&#xff0c;日后还可以推送对应的相关活动促进应用的活跃。实现这个功能我们要先创建数据源&…

Ubuntu 如何安装Snipaste截图软件

在Ubuntu上安装Snipaste-2.10.5-x86_64.AppImage的步骤如下&#xff1a; 1. 下载Snipaste AppImage 首先&#xff0c;从Snipaste的官方网站或GitHub Releases页面下载Snipaste-2.10.5-x86_64.AppImage文件。 2. 赋予执行权限 下载完成后&#xff0c;打开终端并导航到文件所在…

突破与重塑:逃离Java舒适区,借Go语言复刻Redis的自我突破和成长

文章目录 写在文章开头为什么想尝试用go复刻redis复刻redis的心路历程程序员对于舒适区的一点看法关于mini-redis的一些展望结语 写在文章开头 在程序员的技术生涯长河中&#xff0c;我们常常会在熟悉的领域中建立起自己的“舒适区”。于我而言&#xff0c;Java 就是这片承载…

【自然语言处理】TextRank 算法提取关键词、短语、句(Python源码实现)

文章目录 一、TextRank 算法提取关键词 [工具包]二、TextRank 算法提取关键短语[工具包]三、TextRank 算法提取关键句[工具包]四、TextRank 算法提取关键句&#xff08;Python源码实现&#xff09; 一、TextRank 算法提取关键词 [工具包] 见链接 【自然语言处理】TextRank 算法…

展厅为何倾向使用三维数字沙盘进行多媒体互动设计?优势探讨!

随着数字技术的迅猛进步&#xff0c;展厅多媒体互动设计正迎来深刻变革。其中&#xff0c;三维数字沙盘作为经典沙盘模型的革新之作&#xff0c;不仅保留了其空间布局直观展示的优点&#xff0c;更巧妙融入光影互动与中控系统&#xff0c;推动展览展示向智能化迈进。今日&#…

SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)

文章目录 SDKMAN! 的核心功能SDKMAN! 的常用命令SDKMAN! 的优势总结 SDKMAN! 的英文全称是 Software Development Kit Manager。它是一个用于管理多个软件开发工具&#xff08;如 Java、Groovy、Scala、Kotlin 等&#xff09;版本的工具。SDKMAN! 提供了一个简单的方式来安装、…

java配置api,vue网页调用api从oracle数据库读取数据

一、主入口文件 1&#xff1a;java后端端口号 2&#xff1a;数据库类型 和 数据库所在服务器ip地址 3&#xff1a;服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1&#xff1a;column后变量名是数据库中存储的变量名 property的值是column值的…

蓝桥杯C语言组:分治问题研究

蓝桥杯C语言组分治问题研究 摘要 本文针对蓝桥杯C语言组中的分治问题展开深入研究&#xff0c;详细介绍了分治算法的原理、实现方法及其在解决复杂问题中的应用。通过对经典例题的分析与代码实现&#xff0c;展示了分治算法在提高编程效率和解决实际问题中的重要作用&#xff…