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

嵌入式软件中负数如何存储

        在计算机中,负数通常使用补码来表示。下面以8位有符号数为例,展示-1、-2和-3的二进制和十六进制形式,以及它们的计算方法。

十进制数二进制原码二进制反码二进制补码(内存中存储的形式)十六进制补码
-11000 00011111 11101111 11110xFF
-21000 00101111 11011111 11100xFE
-31000 00111111 11001111 11010xFD

计算负数的补码遵循以下固定步骤:

原码​:先写出该负数绝对值的二进制表示(即对应的正数),最高位(符号位)设为1。例如,对于-3:3的二进制是 0000 0011。-3的原码是 1000 0011。
反码​:保留符号位不变,将原码的数值位(后7位)按位取反(0变1,1变0)。-3的原码 1000 0011取反后得到反码 1111 1100。
补码​:在反码的基础上,最低位加1。-3的反码 1111 1100加1后得到最终的补码 1111 1101。

计算机采用补码主要有三个重要原因:

  • 统一加减法​:可以将减法运算转换为加法运算,CPU只需一个加法器就能处理 both 加法和减法,简化了硬件设计。例如,计算 3 - 3等同于计算 3 + (-3)。用补码计算:0000 0011(3的补码) + 1111 1101(-3的补码) = 1 0000 0000。由于是8位系统,最高位的进位1被自然舍弃,结果就是 0000 0000(0),结果正确。

  • 解决0的编码唯一性​:在原码表示中,0有+0(0000 0000)和-0(1000 0000)两种表示,这会造成浪费和混淆。而在补码中,-0(1000 0000)加1后进位,同样得到 0000 0000,从而保证了0的编码唯一性。

  • 扩展表示范围​:8位补码可以表示的范围是-128到+127,比原码的-127到+127多表示一个数(-128)。

需要特别注意的是,一个负数的十六进制表示长度取决于数据类型的位数

  • 8位系统(如 char)中,-2 表示为 0xFE

  • 16位系统(如 short)中,-2 表示为 0xFFFE

  • 32位系统(如 int)中,-2 表示为 0xFFFFFFFEQIAN

这是因为在高位会进行符号扩展,即用1来填充多余的位数,以保持其负数值不变

http://www.dtcms.com/a/507673.html

相关文章:

  • 【运维心得】bitlocker未解之谜:34.3%的诅咒
  • AUTOSAR图解==>AUTOSAR_AP_TR_DDSSecurityIntegration
  • 何超携Iman新马宣传 新片《拾荒法师2》将开拍
  • 实体-联系(E-R)模型
  • 网站开发的调研内容小程序制作方案书
  • 『 QT 』QT控件属性全解析 (一)
  • 临床研究标志物发现与机制探索:纯数据挖掘与“实验+服务”一站式方案,如何选择?
  • 辽宁省网站制作网站建站对象
  • 使用 PyQt5 和 PIL 打造 GIF 圆角处理工具
  • (一).Net, NextJS(微服务同步通讯/Polly/RabbitMQ/Outbox/死信队列处理)
  • 长治网站设计制作网站网站安全设计
  • 腐烂的橘子——LEGB 作用域规则
  • [Linux系统编程——Lesson16.Ext系列⽂件系统]
  • 长尾关键词优化在SEO策略中的重要性与实践技巧
  • 邯郸形象网站建设广州网络推广建站
  • 品牌网站模板速卖通导入WordPress
  • 深入理解 Dubbo 的 ServiceConfig:服务粒度的配置机制
  • 开源 Linux 服务器与中间件(六)服务器--Lighttpd
  • 数据结构——排序的学习(一)
  • 服务器的安全性如何?
  • 新奇特:神经网络速比器,小镇债务清零的算法奇缘
  • 阿里云 OSS MetaQuery 全面升级——新增内容和语义的检索能力,助力 AI 应用快速落地
  • Deepseek新模型Deepseek-OCR, 不仅仅是OCR
  • 重庆网站制作机构怎么建立自己企业网站
  • 律师网站 扁平化扁平化网站 源代码
  • 解耦的艺术:深入理解设计模式之命令模式
  • C# 设计模式——工厂模式
  • 配置电话交换机 3CX 对接微软 Teams 直接路由
  • 亚马逊云渠道商:如何配置 AWS 自动化快照?
  • [优选算法专题四.前缀和——NO.29 和为 K 的子数组]