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

c语言中的原,反,补码

 目录

一、原码

二、反码

三、补码

示例1:

示例2:


在计算机领域中,原码、反码和补码是用来表示有符号整数的三种不同的编码方式。


一、原码

        原码是最直观的一种表示方法,即用最高位表示符号位,0表示正数,1表示负数,其余位表示数值的大小。例如,十进制数+3的原码为00000011,十进制数-3的原码为10000011。

二、反码

        反码是为了解决原码运算中出现的零有两种表示方法的问题而引入的。正数的反码与原码相同,负数的反码是将原码中除符号位外的所有位取反。例如,十进制数+3的反码为00000011,十进制数-3的反码为11111100。

三、补码

        补码是为了解决原码负数相加发生溢出时无法正确表示的问题而引入的。正数的补码与原码相同,负数的补码是将原码中除符号位外的所有位取反,然后再加1。例如,十进制数+3的补码为00000011,十进制数-3的补码为11111101。

示例1:
#include <stdio.h>void printBinary(int num) {for (int i = 7; i >= 0; i--) {printf("%d", (num >> i) & 1);}printf("\n");
}int main() {int num = -3;// 原码printf("原码表示:\n");printBinary(num);// 反码int neg_num = num < 0 ? (~num) : num;printf("反码表示:\n");printBinary(neg_num);// 补码int twos_complement;if (num < 0) {twos_complement = (~num) + 1;} else {twos_complement = num;}printf("补码表示:\n");printBinary(twos_complement);return 0;
}

示例2:
#include <stdio.h>void printBinary(int num) {for (int i = 7; i >= 0; i--) {printf("%d", (num >> i) & 1);}printf("\n");
}int main() {int num1 = 5; // 正数的情况// 原码printf("数字 %d 的原码表示:\n", num1);printBinary(num1);// 反码printf("数字 %d 的反码表示:\n", num1);printBinary(num1);// 补码printf("数字 %d 的补码表示:\n", num1);printBinary(num1);printf("\n");int num2 = -8; // 负数的情况// 原码printf("数字 %d 的原码表示:\n", num2);printBinary(num2);// 反码int neg_num2 = num2 < 0 ? (~num2) : num2;printf("数字 %d 的反码表示:\n", num2);printBinary(neg_num2);// 补码int twos_complement2;if (num2 < 0) {twos_complement2 = (~num2) + 1;} else {twos_complement2 = num2;}printf("数字 %d 的补码表示:\n", num2);printBinary(twos_complement2);return 0;
}

以上代码示例中,首先定义了一个函数printBinary用于将一个整数以二进制形式打印出来。然后在main函数中,将一个整数-3作为示例输入,分别输出了其原码、反码和补码表示。您可以在编译器中运行该代码,查看结果。


http://www.xdnf.cn/news/559.html

相关文章:

  • PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)
  • “劣币驱逐良币”与“U型锁”刍议
  • Linux中的软件管理
  • 解决Windows update服务启动拒绝访问的问题 | wuauserv 注册表拒绝访问的方法
  • Sleuth+Zipkin 服务链路追踪
  • 四级英语备考指南
  • 信息量、香农熵、交叉熵、KL散度总结
  • PowerBi中DATEDIFF怎么使用?
  • vue3 中 iframe 多页面切换导致资源刷新的问题解决
  • 从句详细解析
  • 群晖威联通飞牛等nas如何把宿主机硬盘挂接到可道云docker容器中
  • 【Envi遥感图像处理】016:如何下载NOAA AVHRR GIMMS 全球数据集?
  • 结构体详解
  • (10)VTK C++开发示例 --- 点和线之间的距离
  • 【入门】数字之和为13的整数
  • Doris,新一代实时数仓核心基础设施
  • 数据防泄漏:企业信息安全的重要防线
  • Datawhale AI春训营学习
  • PHP框架在大规模分布式系统中的适用性如何?
  • deekseak 本地windows 10 部署步骤
  • ACM ICPC算法基础包括哪几类
  • Withholding Tax(预扣所得税)-前台操作 Part 1
  • System.in 详解
  • 【笔记】网络安全管理
  • 嵌入式单片机开发 - Keil MDK 编译与烧录程序
  • c++中的类有关概念
  • 精益数据分析(6/126):深入理解精益分析的核心要点
  • 五分钟学会如何基本使用JJWT!!!
  • Java虚拟机面试题:垃圾收集(下)
  • 3.基础开发工具