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

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作为示例输入,分别输出了其原码、反码和补码表示。您可以在编译器中运行该代码,查看结果。


相关文章:

  • `Accelerate`库实现模型并行计算
  • STM32单片机入门学习——第42节: [12-2] BKP备份寄存器RTC实时时钟
  • QML动画--ParallelAnimation和SequentialAnimation
  • linux查看目录相关命令
  • SpringBoot启动后初始化的几种方式
  • 《关于加快推进虚拟电厂发展的指导意见》解读
  • Windows进程管理
  • 微信、抖音、小红书emoji符号大全
  • 【工具变量】A股上市公司信息披露质量KV指数测算数据集(含do代码 1991-2024年)
  • 多线程使用——线程安全、线程同步
  • -SSRF 服务端请求Gopher 伪协议无回显利用黑白盒挖掘业务功能点
  • Scade 语言词法介绍
  • 4.17--4.19刷题记录(贪心)
  • RTMP握手流程
  • 完整游戏排行榜系统实现
  • Opentelemetry 项目解读
  • 3. 进程概念
  • 点灯大师(第一步)
  • I/O多路转接之select、poll、epoll详解
  • JS中实现类似sleep、wait、delay的延时功能
  • 李家超将率团访问浙江
  • 美政府公布1968年罗伯特·肯尼迪遇刺事件档案
  • 推动中阿合作“向新而行”,这场论坛在上海松江举行
  • 江苏银行去年净赚超318亿增超10%,不良贷款率持平
  • 习近平圆满结束对柬埔寨国事访问
  • 二手服装“批发”市集受到年轻人追捧,是哪一股潮流在推动?