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

有符号数和无符号数的加减运算

一、无符号数的加减运算

  1. 加法

    • 规则:直接按二进制逐位相加,若最高位产生进位(即结果超出(2^n)范围),则结果对(2^n)取模((n)为位数)。
    • 示例(8位无符号数):
      • (200 + 100 = 300),但8位最大值为255,溢出后结果为(300 \mod 256 = 44)。
      • 结果:(\boxed{44})
  2. 减法

    • 规则:直接按二进制逐位相减,若被减数小于减数,结果回绕为(2^n - |被减数 - 减数|)。
    • 示例(8位无符号数):
      • (10 - 20 = -10),回绕后结果为(256 - 10 = 246)。
      • 结果:(\boxed{246})

二、有符号数的加减运算(补码表示)

  1. 加法

    • 规则
      • 直接按二进制逐位相加(符号位参与运算)。
      • 溢出判断:若两个正数相加结果为负,或两个负数相加结果为正,则溢出。
    • 示例(8位有符号数):
      • (100 + 50 = 150)(8位有符号数范围为(-128)到(127)),溢出后结果为补码(10010110_2 = -106)。
      • 结果:(\boxed{-106\quad(\text{溢出})})
  2. 减法

    • 规则:将减法转换为加法,即(A - B = A + (-B)),其中(-B)为(B)的补码(取反后加1)。
    • 示例(8位有符号数):
      • (50 - 100 = 50 + (-100)):
        • (100)的补码:取反(01100100_2 \rightarrow 10011011_2),加1得(10011100_2)(即(-100))。
        • 计算(00110010_2 + 10011100_2 = 11001110_2)(补码),对应十进制(-50)。
      • 结果:(\boxed{-50})

三、溢出检测

  1. 无符号数

    • 加法溢出:最高位产生进位(进位标志位为1)。
    • 减法溢出:被减数小于减数(借位标志位为1)。
  2. 有符号数

    • 加法溢出:两正数相加得负,或两负数相加得正。
    • 减法溢出:正数减负数得负,或负数减正数得正。

四、关键区别

运算类型无符号数有符号数(补码)
表示范围(0 \leq x < 2^n)(-2^{n-1} \leq x < 2^{n-1})
溢出处理结果对(2^n)取模符号位异常(需检测溢出)
减法实现直接二进制减法转换为加法((A + (-B)))

五、常见问题

  1. 为什么有符号数用补码表示?

    • 补码统一了正负数的加减法规则,符号位可直接参与运算,无需额外判断。
  2. 如何快速计算补码?

    • 对原码取反(按位取反)后加1。例如:
      (100_{10} = 01100100_2 \rightarrow 10011011_2 + 1 = 10011100_2)(即(-100))。
  3. 如何判断结果是否溢出?

    • 无符号数:观察进位/借位标志位。
    • 有符号数:检查符号位是否异常(如正+正=负)。

通过上述规则和示例,可以清晰理解无符号数和有符号数在加减运算中的差异及处理逻辑。

http://www.lryc.cn/news/546342.html

相关文章:

  • 动态链接器(十):重定位
  • EGO-Planner的无人机视觉选择(yolov5和yolov8)
  • IO标准函数和时间函数
  • 为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心
  • 【零基础到精通Java合集】第二十三集:G1收集器深度解析
  • 似然函数与极大似然估计
  • QSFP(Quad Small Form-factor Pluggable)详解
  • WDM_OTN_基础知识_波分系统基本构成-无源器件
  • 【音视频】ffmpeg音视频处理基本流程
  • 【网络编程】之TCP实现客户端远程控制服务器端及断线重连
  • 云原生容器编排:构建智能弹性应用的自动化引擎
  • centos虚拟机安装
  • 社会力模型:Social force model for pedestrian dynamics
  • 机器学习数学通关指南
  • 【Mac】2025-MacOS系统下常用的开发环境配置
  • # C# 中堆(Heap)与栈(Stack)的区别
  • ubuntu离线安装nvidia-container-runtime
  • 用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录
  • 学习笔记-DeepSeek在开源第四天发布DualPipe和EPLB两项技术
  • C++入门基础知识1
  • 神经网络AI原理回顾
  • PPT 小黑第38套
  • 主时钟与虚拟时钟约束
  • K8S学习之基础六:k8s中pod亲和性
  • 如何通过rust实现自己的web登录图片验证码
  • 盛京开源社区加入 GitCode,书写东北开源生态新篇章
  • QKV 注意力机制在Transformer架构中的作用,和卷积在卷积神经网络中的地位,有哪些相似之处?
  • 高效与高并发API开发:使用FastAPI与Redis实现请求限制与速率控制
  • Centos7源码编译安装Sqlite最新版本
  • mybatis热点面试题第五弹