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

GESP C++等级认证三级14-原码反码补码2-1

计算机中的数据都是以二进制方式存在的。对于程序中的整数,计算机可以通过原码、反码和补码等方式进行存储。

1 原码

1.1 表示方式

用原码表示整数的方法为,最高位表示该整数的符号,0表示正数,1表示负数,其余位表示该整数的数值(二进制形式)。以8位二进制数为例,5和-5的原码分别如图1所示。

图1 +5和-5的原码表示方式

1.2 加法计算

如果计算机使用原码的方式保存整数,在进行整数的加法计算时,两个整数相加或者两个负数相加是没有问题的,如图2所示。

图2 使用原码进行正整数和负整数相加

从图2中可以看出,使用原码计算5+5或者-5+(-5)是没有问题的。但是当计算一个正整数与一个负整数相加时,就会出现问题,如图3所示。

图3 使用原码进行正整数与负整数的相加

从图3可以看出,使用原码计算5+(-5)时,得到的答案是-10,很明显结果是错误的。

1.3 取值范围

当使用一个8位二进制原码时,其表示的最小整数是“11111111”,即-127,最大整数是“0111 1111”,即127。所以8位二进制原码的取值范围是-127~127,这个范围内有255个整数。但是8位二进制原码可以有256种取值,主要原因是,在表示0时,存在+0和-0两种情况,即“0000 0000”和“1000 0000”。

2 反码

2.1 表示方式

使用反码能够解决正整数与负整数相加的问题。正整数的反码与其原码相同,负整数的反码是在其原码的基础上,符号位不变,数值位按位取反,如图4所示。

图4 正整数与负整数的反码

相关链接1 负数反码的另外一种求法,先获取该负数的绝对值,之后将绝对值按位取反,就可以得到该负数的反码。

2.2 加法计算

使用反码计算正整数与负整数相加问题,如图5所示。

图5 使用反码进行正整数和负整数相加

其中,反码相加使用了“进位循环”的方式,即最高的进位循环到最低位使用。5+(-3)的结果是2,结果正确。但是由于反码的这种“进位循环”,导致计算效率不高。

2.3 取值范围

使用8位二进制反码表示整数时,也存在+0和-0问题。+0的反码是“0000 0000”,而-0的反码是“1111 1111”,所以8位二进制反码的取值范围是-127~127。

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

相关文章:

  • HashMap之线程安全问题
  • 网站安全建设方案报告gta5显示网站建设中
  • Python学习AI大模型:零基础快速入门指南
  • WebRTC获取GB28181监控摄像头实时音视频流的实现方法
  • 深入剖析:C++、C 和 C# 中的 static
  • 做电商要关注哪些网站临沂网站建设排名
  • 带条件的排名问题
  • 2025 诺贝尔物理学奖 | 从宏观量子隧穿到量子计算
  • 怎么做网站 有空间wordpress 弹性布局设计案例
  • LDPC 码基本概念
  • 在线考试响应式网站模板下载学校如何报销网站开发费用
  • 可以建微信网站的成考做那个网站的题比较好
  • 2025年推荐练习编程游戏和软件
  • 【HarmonyOS】手势处理
  • 学做缝纫的网站wordpress网站换主机
  • 葫芦岛做网站价格免费手机网站系统
  • PS2020使用教程|绘制深秋枫叶风景图
  • 济南建网站多少钱设计说明室内设计现代简约
  • Go语言 编写最简单的命令行工具
  • 【指针学习】
  • Go容器:双向链表和小根堆的源码解读
  • 深圳vi设计工作室搜索seo优化托管
  • 做的最好的理财网站地址一地址二在线发布页
  • 网站开发程序员招聘梅州建站怎么做
  • 普陀酒店网站建设有没有专门做中式的设计网站
  • 基于STM32与influxDB的电力监控系统-20
  • 购物网站开发多少钱免费连网络的软件有哪些
  • LeetCode算法日记 - Day 69: 第 N 个泰波那契数、三步问题
  • 【系统分析师】写作框架:项目风险管理及其应用
  • 容器编排大王Kubernetes——控制器的使用(3)