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

如何理解有符号数在计算机中用​​补码​​存储

文章目录

    • ​**​🚗 汽车里程表模型(8位补码)​**​
      • ​**​规则 1:正数就是正常数字​**​
      • ​**​规则 2:负数 = “从最大值倒着走”​**​
    • ​**​🔢 补码的运算:减法变加法​**​
      • ​**​例子:计算 `7 - 5`​**​
    • ​**​❓ 为什么补码这么设计?​**​
      • ​**​1. 减法变加法(CPU 省事!)​**​
      • ​**​2. 零只有一种表示(不浪费!)​**​
      • ​**​3. 溢出自动处理(像钟表一样循环)​**​
    • ​**​🎯 补码速记口诀​**​
      • ​**​实战练习​**​
    • ​**​🤔 还不明白?打个比方!​**​
    • ​**​✅ 终极总结​**​

​🚗 汽车里程表模型(8位补码)​

假设你有一辆老式汽车,它的里程表只有 ​​3 位数​​(最大显示 999,最小 000)。
现在,我们用它来理解 ​​8位补码​​(因为 8 位二进制的最大值是 255,类似 999)。

​规则 1:正数就是正常数字​

  • +5 → 直接显示 005(二进制 00000101
  • +127 → 显示 127(二进制 01111111

​规则 2:负数 = “从最大值倒着走”​

  • 比如 -5
    • 先找到 999(最大值)
    • 然后往回走 5 步 → 999 - 5 = 994
    • 所以 -5 在里程表上显示 994(二进制 11111011

​关键点​​:

  • ​负数 = 最大值 + 1 - 绝对值​
    • 8 位二进制:-5 = 256 - 5 = 251(二进制 11111011
  • ​计算机用同样的方式存储负数!​

​🔢 补码的运算:减法变加法​

​例子:计算 7 - 5

  1. ​找到 -5 的补码​​:
    • -5 = 256 - 5 = 251(二进制 11111011
  2. ​计算 7 + (-5)​:
    • 7 = 00000111

    • -5 = 11111011

    • 相加:

        00000111 (7)  
      + 11111011 (-5)  
      ------------  
      100000010 (2)  
      
    • ​丢弃第9位​​(就像里程表超过 999 会归零),剩下 000000102)→ ​​结果正确!​


​❓ 为什么补码这么设计?​

​1. 减法变加法(CPU 省事!)​

  • 计算机​​最怕减法​​,但加法很容易。
  • 补码让 A - B 变成 A + (-B),​​CPU 只要一个加法器就能搞定所有运算!​

​2. 零只有一种表示(不浪费!)​

  • 原码有 +000000000)和 -010000000),但补码只有 00000000
  • -0 的补码还是 00000000​,不会混淆!

​3. 溢出自动处理(像钟表一样循环)​

  • 比如 127 + 1
    • 01111111 (127) + 1 = 10000000 (-128)
    • ​就像钟表从 12:59 跳到 1:00,很自然!​

​🎯 补码速记口诀​

​“正数直接存,负数取反加1,减法变加法!”​

​实战练习​

  1. -3 的 8 位补码是多少?​

    • 先写 +300000011
    • 取反:11111100
    • 加1:11111101(这就是 -3 的补码!)
  2. ​计算 10 - 3(用补码)​

    • 10 = 00001010

    • -3 = 11111101

    • 相加:

      00001010 (10)  
      +11111101 (-3)  
      ------------  
      100000111 (7)  
      
    • 丢弃第9位 → 000001117),​​结果正确!​


​🤔 还不明白?打个比方!​

想象你在玩 ​​《超级马里奥》​​,屏幕最右边是 255,最左边是 0

  • ​正数​​:马里奥向右走(0 → 1 → 2 → ... → 127
  • ​负数​​:马里奥向左走(-1 = 255-2 = 254,…,-128 = 128
  • ​如果走到尽头​​(比如 127 + 1),就会从 -128 重新开始!

​补码的本质就是:用“绕圈”的方式表示负数!​


​✅ 终极总结​

问题补码的解决方案例子(8位)
​怎么存负数?​取反加1-5 = ~5 + 1 = 11111011
​怎么算减法?​用加法代替7 - 5 = 7 + 251 = 2
​零有几个?​唯一一个00000000
​溢出怎么办?​自动循环127 + 1 = -128

​现在你懂了吗?如果还有问题,直接问我!​​ 😊

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

相关文章:

  • 网络安全第14集
  • C51:使用PWM波调节LED灯的亮度
  • GitLab 18.2 发布几十项与 DevSecOps 有关的功能,可升级体验【三】
  • 如何检测并修复服务器中的rootkit威胁
  • 中型企业如何用 RUM 技术破解地理分布式用户体验难题?从指标监测到优化实操
  • 暴雨服务器更懂人工智能+
  • Jetson Orin nx识别不到imx219 需要额外设置
  • [ The Missing Semester of Your CS Education ] 学习笔记 Vim篇
  • 4.DRF 认证--Authentication4.DRF 认证--Authentication
  • 从文件到文件描述符:理解程序与文件的交互本质
  • TapData 出席 TDBC 2025 可信数据库发展大会,分享“实时+信创”时代的数据基础设施演进路径
  • Kylin10 安装tomcat9
  • Centos 7 命令:ip addr
  • 黑马商城微服务-下
  • 【QT搭建opencv环境】
  • R 语言科研绘图 --- 其他绘图-汇总1
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(四)
  • Mac安装navicat17版本教程mac下载Navicat Premium for Mac v17.1.9【好用】
  • ubuntu资源共享samba 安装与配置 mac/windows共享ubuntu文件资源
  • 1.gradle安装(mac)
  • 【江科大CAN】2.1 STM32 CAN外设(上)
  • CVE-2021-21148
  • fmriprep安装与试用_附ubuntu分区大小调整
  • C语言:20250728学习(指针)
  • 零基础学 AI 提示词:从 “提问” 到 “高效交互” 的第一步
  • 股指期货周度想法
  • 【ELasticsearch】案例:AWS 上 Elasticsearch 对接 NLB / ALB
  • 浏览器安全演进:从裸指针到 raw_ptr 的实践与思考
  • 开发指南125-HTML DOM事件
  • 使用 Qt Installer Framework(IFW)进行打包