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

C语言原码、反码和补码的详解

C语言原码、反码和补码的详解

  • 放在最前面的
  • 1、前言
          • 正数的原码、反码和补码
          • 负数的原码、反码和补码
  • 2、整数的原码
      • (2.1)原码的定义
      • (2.2)计算原码
  • 3、整数的反码
      • (3.1)反码的定义
      • (3.2)计算反码
  • 4、整数的补码
      • (4.1)补码的定义
      • (4.2)计算补码
          • (a)正数的补码
          • (b)负数补码
  • 5、原码、反码和补码的相互转换
  • END

放在最前面的

🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼
🎉🎉我的C语言初阶合集:C语言初阶合集,希望能帮到你!!!😍 😍
👋🏼🎉🎊创作不易,欢迎大家留言、点赞加收藏!!! 🥳😁😍

1、前言

  • 哈哈哈哈!关于二进制🔍、八进制🐙(看,像不像八只小爪子?)、十进制🔟(这个数字本身就像是在笑呢!)、还有十六进制🔟🔟(哎呀,是不是数错了,其实是0-F啦,开个玩笑~)的那些让人头大的事儿,别发愁啦!快来点击下面这篇既搞笑又有趣的博客,让我们一起在数字的海洋里遨游吧!🤣🚀📚
  • C语言常见进制 (二进制、八进制、十进制、十六进制)详解

  • 整数的二进制表示形式,其实有三种

原码:原码 (true form) 是一种计算机中对数字的二进制定点表示方法。
原码表示法 在数值前面增加了 一位符号位(即最高位为符号位):正数该位为 0,负数该位为 1(0有两种表示:+0 和 -0),其余位表示数值的大小。

反码:反码通常是用来由原码求补码或者由补码求原码的过渡码。

补码:计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,
符号位 都是用 0表示“正”,用 1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。
原因在于,使用补码,可以将符号位和数值域统一处理;
同时,加法和减法也可以统一处理。

正数的原码、反码和补码

正数的原码、反码和补码都是相等的

  • 如图:
负数的原码、反码和补码

哈哈哈哈!关于负数的原码📜、反码🔄(就像是在做反转魔术一样)、还有补码🧩(补上缺失的部分,完美!)的那些让人好奇的小知识,别着急走开!
请继续往下看,保证让你大开眼界!👀✨📚

2、整数的原码

(2.1)原码的定义

原码 是计算机机器数中最简单的一种形式,
数值位 就是真值的绝对值,
符号位 为“0”时表示 正数,符号位为“1”时表示 负数
原码又称 带符号的绝对值。
原码的整数中“0”的表示形式各有2种,“+0”和“-0”不一样,
以 8位机器数为例,
整数的“+0”原码为 0000 0000;
整数的“-0”原码为 1000 0000;

(2.2)计算原码

例如,我们用 8位二进制表示一个数,
+11 的原码为 0000 1011,
-11 的原码是 1000 1011

计算机中所有的数均用0,1编码表示,数字的正负号也不例外,
如果一个机器数字长是n位的话,约定最左边一位用作符号位,其余n-1位用于表示数值。
在符号位上用 “0” 表示正数;用 “1” 表示负数。
数值位表示真值的绝对值。凡不足 n-1位的,
整数则在最高位左边加零以补足 n-1位。
这种计算机的编码形式叫做 原码。记作X=[X]原。
例如:
在字长 n=8 的机器内:
[+1011]原 = 0000 1011
[-1011]原 = 1000 1011

3、整数的反码

(3.1)反码的定义

反码通常是用来由 原码求补码 或者由 补码求原码 的过渡码。
反码 表示法规定:
正数 的 反码 与其 原码 相同;
负数 的 反码 是对 符号位保持为1, 其余位 取反

(3.2)计算反码

对于 二进制原码 10010 求 反码: 如图:

机器数的反码的整数和小数中“0”的表示形式各有2种,
“+0”和“-0”不一样,
以 8位机器数为例,
整数的“+0”原码为0000 0000,
反码为0000 0000;
整数的“-0”原码为1000 0000,
反码为1111 1111;
反码跟原码是正数时,一样;
负数时,反码就是原码符号位除外,其他位按位取反。

4、整数的补码

(4.1)补码的定义

补码,就是计算机里用来表示负数的巧妙方法🧠,
正数不变,
负数则是它的反码加1️⃣,
超实用,超有趣😎!

(4.2)计算补码

(a)正数的补码

正数 的补码就是 其 原码

(b)负数补码

在计算负数 的补码时,在其 反码的末位 加1。
例子:
1011 0100 (原码)
1100 1011 (反码)符号位不变,数值位取反,
则其补码为
1100 1011 + 1 = 1100 1100 (补码)

5、原码、反码和补码的相互转换

记住下面的规则 和 牢记 原码、反码和补码的定义 。

正数 的原码、反码、补码相同。


负数 的反码:符号位不变,原码的数值取反。
负数 的补码:符号位不变,原码转换成反码,反码末位加1。
负数 的原码 转换为 反码:符号位不变,数值位分别“按位取反”。
负数 的反码 转换为 原码:符号位不变,数值位分别“按位取反”。

负数 的原码 转换为 补码:符号位不变,数值位按位取反,末位再加1。
负数 的补码 转换为 原码:符号位不变,数值位按位取反,末位再加1;
或者 符号位不变,先减 1,再按位取反(原码转换为补码的逆运算)

END

亲爱的读者,本文结束咯😉。
对内容有看法、建议或疑问不?评论区等你留言哦🤗💭

每天都在学习的路上!
On The Way Of Learning


http://www.kler.cn/a/375938.html

相关文章:

  • Unity 游戏性能优化实践:内存管理与帧率提升技巧
  • 信息学科平台系统开发:基于Spring Boot的最佳实践
  • Axure使用动态面板制作新闻栏目高级交互
  • 【STM32】通过 DWT 实现毫秒级延时
  • 老电脑不能装纯净版windows
  • 【AI日记】24.11.01 LangChain、openai api和github copilot
  • Vue 如何自定义组件:从入门到精通
  • 【保姆级教程】Linux服务器本地部署Trilium+Notes笔记结合内网穿透远程在线协作
  • 搞人工智能开源大语言模型GPT2、Llama的正确姿势
  • 企业后端系统通用模版
  • javaScript 和 Java 的语法区别(有前端基础)
  • 【网络安全】|nessus使用
  • 【论文速读】| RED QUEEN: 保护大语言模型免受隐蔽多轮越狱攻击
  • 基于SSM医院门诊互联电子病历管理系统的设计
  • vue.set主要是干啥的,有啥作用
  • 指定 Maven 使用的 Java 版本
  • 数据库存储过程的后端调用(SQLServer)
  • [241102] Fedora Linux 41 正式发布 | Wasmer 5.0 发布
  • 【Apache Zookeeper】
  • Android 屏蔽\取消(禁止)下拉通知栏包括二级菜单下拉
  • Linux云计算 |【第五阶段】CLOUD-DAY6
  • C++中使用seekg函数进行随机读写
  • 基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • 金融文本情感分析模型
  • 前端之html(一)
  • 【2024最新开源】六足机器人控制算法