嵌入式硬件篇---原码、补码、反码
文章目录
- 前言
- 简介
- 八进制原码、反码、补码
- 1. 原码
- 规则
- 示例
- 问题
- 2. 反码
- 规则
- 示例
- 问题
- 3. 补码
- 规则
- 示例
- 优点
- 4. 补码的运算
- 5. 总结
- 十六进制原码、反码、补码
- 1. 十六进制的基本概念
- 2. 十六进制的原码
- 规则
- 示例
- 3. 十六进制的反码
- 规则
- 示例
- 4. 十六进制的补码
- 规则
- 示例
- 5. 十六进制补码的运算
- 示例:计算 5 + (-3)
- 6. 十六进制补码的范围
- 7. 总结
- 总结
前言
以上就是今天要讲的内容,本文仅仅简单介绍了八进制、十六进制的原码、反码、补码。
简介
在计算机中,源码、补码和反码是表示有符号整数的三种方式,主要用于处理负数。下面详细介绍它们的概念和转换方法,并通过示例说明。
八进制原码、反码、补码
1. 原码
源码是最直观的表示方法,直接用最高位表示符号(0 表示正数,1 表示负数),其余位表示数值的绝对值。
规则
正数:符号位为 0,数值部分为二进制绝对值。
负数:符号位为 1,数值部分为二进制绝对值。
示例
以 8 位二进制为例:
+5 的源码:00000101
-5 的源码:10000101
问题
- 源码的缺点是 0 有两种表示形式:00000000(+0)和 10000000(-0)。
- 加减法运算不方便,需要额外处理符号位。
2. 反码
反码是为了解决源码加减法的问题而提出的。正数的反码与源码相同,负数的反码是对源码的数值部分逐位取反(符号位不变)。
规则
正数:与源码相同。
负数:符号位为 1,数值部分逐位取反。
示例
+5 的反码:00000101(与源码相同)
-5 的反码:11111010(符号位不变,数值部分取反)
问题
- 反码仍然存在 +0 和 -0 的问题。
- 加减法运算时,最高位的进位需要循环加到最低位(称为“循环进位”),增加了复杂性。
3. 补码
补码是目前计算机中最常用的表示方法,解决了反码的问题。正数的补码与源码相同,负数的补码是对反码加 1。
规则
正数:与源码相同。
负数:符号位为 1,数值部分逐位取反后加 1。
示例
+5 的补码:00000101(与源码相同)
-5 的补码:
源码:10000101
反码:11111010
补码:11111011(反码加 1)
优点
- 0 只有一种表示形式:00000000。
- 加减法运算可以直接进行,无需额外处理符号位。
- 补码表示的范围比源码和反码更大。
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。
十六进制补码:与二进制补码的原理相同,只是用十六进制表示。
通过十六进制补码,计算机可以高效地进行有符号整数的加减法运算,同时避免了符号处理的复杂性。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了八进制、十六进制的原码、反码、补码。
相关文章:
嵌入式硬件篇---原码、补码、反码
文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...
评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法
评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…...
洛谷题目: P2398 GCD SUM 题解 (本题较难,省选-难度)
题目传送门: P2398 GCD SUM - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题涉及到 欧拉函数,素数判断,质数,筛法 ,三大知识点,相对来说还是比较难的。 本题要求我们计算 …...
kubernetes-cni 框架源码分析
深入探索 Kubernetes 网络模型和网络通信 Kubernetes 定义了一种简单、一致的网络模型,基于扁平网络结构的设计,无需将主机端口与网络端口进行映射便可以进行高效地通讯,也无需其他组件进行转发。该模型也使应用程序很容易从虚拟机或者主机物…...
AI Agent有哪些痛点问题
AI Agent有哪些痛点问题 目录 AI Agent有哪些痛点问题AI Agent领域有哪些知名的论文缺乏一个将智能多智能体技术和在真实环境中学习的两个适用流程结合起来的统一框架LLM的代理在量化和客观评估方面存在挑战自主代理在动态环境中学习、推理和驾驭不确定性存在挑战AI Agent领域有…...
使用Java爬虫获取京东JD.item_sku API接口数据
在电商领域,商品的SKU(Stock Keeping Unit)信息是运营和管理的关键数据。SKU信息包括商品的规格、价格、库存等,对于商家的库存管理、定价策略和市场分析至关重要。京东作为国内领先的电商平台,提供了丰富的API接口&am…...
华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B
华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载: AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…...
平方数列与立方数列求和的数学推导
先上结论: 平方数列求和公式为: S 2 ( n ) n ( n 1 ) ( 2 n 1 ) 6 S_2(n) \frac{n(n1)(2n1)}{6} S2(n)6n(n1)(2n1) 立方数列求和公式为: S 3 ( n ) ( n ( n 1 ) 2 ) 2 S_3(n) \left( \frac{n(n1)}{2} \right)^2 S3(n)(2n(n1)…...
Java中的synchronized关键字与锁升级机制
在多线程编程中,线程同步是确保程序正确执行的关键。当多个线程同时访问共享资源时,如果不进行同步管理,可能会导致数据不一致的问题。为了避免这些问题,Java 提供了多种同步机制,其中最常见的就是 synchronized 关键字…...
告别传统校准!GNSS模拟器在计量行业的应用
随着GNSS技术的不断进步,各类设备广泛采用该技术实现高精度定位,并推动了其在众多领域的广泛应用。对于关键行业如汽车制造和基础设施,设备的可用性和可靠性被视为基本准则,GNSS作为提供“绝对位置”信息的关键传感器,…...
数据结构结尾
1.二叉树的分类 搜索二叉树,平衡二叉树,红黑树,B树,B树 2.Makefile文件管理 注意: 时间戳:根据时间戳,只编译发生修改后的文件 算法: 算法有如上五个要求。 算法的时间复杂度&am…...
【golang】量化开发学习(一)
均值回归策略简介 均值回归(Mean Reversion)假设价格会围绕均值波动,当价格偏离均值一定程度后,会回归到均值。 基本逻辑: 计算一段时间内的移动均值(如 20 天均线)。当当前价格高于均值一定比…...
AI前端开发:跨领域合作的新引擎
随着人工智能技术的飞速发展,AI代码生成器等工具的出现正深刻地改变着软件开发的模式。 AI前端开发的兴起,不仅提高了开发效率,更重要的是促进了跨领域合作,让数据科学家、UI/UX设计师和前端工程师能够更紧密地协同工作࿰…...
数组练习(深入理解、实践数组)
1.练习1:多个字符从两端移动,向中间汇聚 编写代码,演示多个字符从两端移动,向中间汇聚 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() {//解题思路://根据题意再…...
Bigemap Pro如何进行面裁剪
一般在处理矢量数据,制图过程中,常常会用到面文件的裁剪功能,那么有没有一个工具可以同时实现按照线、顶点、网格以及面来裁剪呢?今天给大家介绍一个宝藏工具,叫做Bigemap Pro,在这里工具里面可以实现上述面…...
acwing算法全总结-数学知识
快速幂 原题链接:快速幂 ac代码: #include<iostream> #include<algorithm> using namespace std; typedef long long LL; LL qmi(int a,int b,int p) {LL res1%p;while(b)//这里本应该分两次进行,不过只有一次询问{if(b&1)…...
SpringMVC学习使用
一、SpringMVC简单理解 1.1 Spring与Web环境集成 1.1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(sp…...
10、《文件上传与下载:MultipartFile与断点续传设计》
文件上传与下载:MultipartFile与断点续传设计 一、基础文件上传与MultipartFile解析 1.1 Spring MVC文件上传基础 PostMapping("/upload") public String handleFileUpload(RequestParam("file") MultipartFile file) {if (!file.isEmpty())…...
DeepSeek 本地部署(电脑安装)
1.先安装Ollama 开源框架 网址链接为:Ollama 2.点中间的下载 3.选系统 4.下载好就安装 5.输入命令ollama -v 6.点击Model 7.选如下 8.选版本 9.复杂对应命令 10.控制台粘贴下载 11.就可以问问题啦 12.配置UI界面(在扩展里面输入) 13.配置完即可打开 14.选择刚才安装的就好啦…...
DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析
在人工智能领域,DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型,各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析,帮助您更好地了解它们的特点和优势。…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
