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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906365.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea 导入Spring源码遇到的坑并解决

1.下载相关文件 通过百度网盘分享的文件:Spring 链接:https://pan.baidu.com/s/1r9rkGOCaY9SFn9ecng5cIg?pwd8888 提取码:8888 2.配置gradle环境 gradle下载地址 需要翻墙下 https://services.gradle.org/distributions/ 我选择的是 grad…

Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)

文章目录 零、写在前面一、水平拆分(sharding/分片)、故障转移(failover)机制介绍水平拆分(Sharding)故障转移机制 二、Redis的水平拆分的机制有关的配置1. 环境准备2. 配置文件配置3. 启动所有Redis实例4. 创建集群5. 测试集群读/写6. 集群管理 三、Red…

C++STL详解(九)map和set的使用

一.关联式容器的介绍 CSTL包含了序列式容器和关联式容器&#xff1a; 序列式容器里面存储的是元素本身&#xff0c;其底层是线性的数据结构&#xff0c;就譬如我们之前学习的vector&#xff0c;list&#xff0c;deque等等。关联式容器里面存储的是<key,value>的键值对&…

goframe开发一个企业网站 模版界面4

###goframe已有了模板的功能 {{"string"}} // 一般 string {{raw string}} // 原始 string {{c}} // byte {{print nil}} // nil 也被支持 {{. | FuncA | FuncB | FuncC}}{{if .condition}}... {{else}}{{if .condition2}}...{{end}} {{end}}{{rang…

一、k8s快速入门之学习Kubernetes组件基础

一、三个容器管理器平台 Apache MESOS 开源的分布式资源管理框架&#xff0c;被推特选为基础平台&#xff0c;2019年推特换位k8s&#xff0c;MESOS最新版可以在MESOS上管理k8sDOCKER SWARM docker总部发行的&#xff0c;实现docker的集群方案&#xff0c;和docker捆版一起&…

初始JavaEE篇——多线程(7):定时器、CAS

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…

【UGUI】为射击游戏添加动态显示的分数和血量到UI界面

项目背景 在这个项目中&#xff0c;我们希望实现一个简单的游戏系统&#xff0c;其中玩家可以通过击中目标来获得分数&#xff0c;同时通过与怪物碰撞来减少血量。分数和血量需要在游戏界面上实时显示&#xff0c;以便玩家能够随时了解自己的状态。 技术实现 1. 静态变量的使…

stm32引脚PB3、PB4、PA15作为普通IO口用时,需要先解除调试端口复用

当项目调试的时候&#xff0c;发现PA15引脚无论配置输出高还是低或者输入&#xff0c;均只能输出3.3V的高电平。 目前STM的硬件调试有两种方法&#xff0c;JTAG和SW的方式&#xff0c;目前个人认为最好的方式就是SW&#xff0c;因为它只占用PA13和PA14两个IO。而JTAG还要多占用…

MATLAB与STK互联:仿真并获取低轨卫星与指定区域地面站的可见性数据

MATLAB控制STK实现&#xff1a;仿真并获取低轨卫星与指定区域地面站的可见性数据 本次仿真主要参考了多篇文献和网站&#xff0c;包括但不限于&#xff1a;《Using MATLAB for STK Automation》、CSDN博文&#xff1a; 拜火先知的博客_CSDN博客-笔记、AGI官网有关MATLAB的内容…

用Python设置、更新和获取Excel单元格的值

Excel工作簿作为一款广泛使用的数据管理工具&#xff0c;与Python相结合&#xff0c;可以使得自动化处理大量数据成为可能。通过Python来设置、更新以及读取Excel单元格的值&#xff0c;不仅可以极大地提高工作效率&#xff0c;减少重复劳动&#xff0c;还能增强数据处理流程的…

Golang | Leetcode Golang题解之第525题连续数组

题目&#xff1a; 题解&#xff1a; func findMaxLength(nums []int) (maxLength int) {mp : map[int]int{0: -1}counter : 0for i, num : range nums {if num 1 {counter} else {counter--}if prevIndex, has : mp[counter]; has {maxLength max(maxLength, i-prevIndex)} …

提升网站安全性 HTTPS的重要性与应用指南

内容概要 在如今数字化快速发展的时代&#xff0c;网站安全显得尤为重要。许多用户在访问网站时&#xff0c;尤其是涉及个人信息或金融交易时&#xff0c;对数据传输的安全性有着高度的关注。HTTPS&#xff08;超文本传输安全协议&#xff09;正是为了满足这种需求而诞生的。通…

DICOM标准:解析DICOM属性中的病人模块

目录 病人模块概述 1. 病人关系模块&#xff08;Patient Relationship Module&#xff09; 2. 病人识别模块&#xff08;Patient Identification Module&#xff09; 3. 病人统计模块&#xff08;Patient Demographic Module&#xff09; 4. 病人医学模块&#xff08;Pati…

编写高性能爬虫抓取股票行情数据

最近给一个私募大佬帮忙做了一些股票交易有关的系统&#xff0c;其中涉及到行情数据抓取的问题&#xff0c;一番摸索之后&#xff0c;把成果在这里做个分享。 我把行情抓取的部分&#xff0c;和一个写手记的小功能&#xff0c;单独拿了出来放在一个小系统里面&#xff0c;可以…

人像摄影笔记(自用)

相机的原理&#xff1a;镜头--CMOS传感器---通过ISP的计算 然后通过手机的GPU处理后呈现出图片的形式 镜头&#xff1a;定焦和变焦&#xff0c;变焦分为光学变焦和数字变焦 光学变焦&#xff1a;焦距变了 画质不变 数字变焦&#xff1a;焦距不变 裁剪画质 数字变焦一…

前端埋点与监控最佳实践:从基础到全流程实现.

前端埋点与监控最佳实践&#xff1a;从基础到全流程实现 大纲 我们会从以下三个方向来讲解埋点与监控的知识&#xff1a; 什么是埋点&#xff1f;什么是监控&#xff1f; JS 中实现监控的核心方案 写一个“相对”完整的监控实例 一、什么是埋点&#xff1f;什么是监控&am…

电能质量治理产品在分布式光伏电站的应用

1.概述 随着全球对可再生能源需求的不断增长&#xff0c;分布式光伏电站的建设与扩张正迅速发展。然而&#xff0c;在其运行过程中&#xff0c;分布式光伏电站遭遇了一系列挑战&#xff0c;包括企业关口计量点功率因数降低和谐波污染等问题。这些问题不仅影响了光伏电站的运行…

遥感图像Trento原始数据集下载

遥感图像Trento原始数据集下载 偶然间在某个项目里发现了Trento的完整数据集&#xff0c;不过那个数据集有些奇怪的小改动 虽然我已经不做遥感方向了&#xff0c;不过当初我找这个数据集也是花了很长时间 于是重新整理了一下&#xff0c;就当是方便后来的研究者使用吧 githu…

GenAI 生态系统现状:不止大语言模型和向量数据库

自 20 个月前 ChatGPT 革命性的推出以来&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;领域经历了显著的发展和创新。最初&#xff0c;大语言模型&#xff08;LLMs&#xff09;和向量数据库吸引了最多的关注。然而&#xff0c;GenAI 生态系统远不止这两个部分&#…

个人应用接入使用阿里云盘和百度网盘

一、阿里云盘 官方文档接入流程 语雀流程概述服务端 API 调用流程如下图所示1. 创建账...https://www.yuque.com/aliyundrive/zpfszx/btw0tw 1. 接入授权 1.1. App Key、App Secret和用户授权验证 在通过网盘开发者认证之后&#xff0c;创建个人应用会生成APP ID&#xff…