计算机基础知识讲解(原码反码补码)(以及在C语言里面是如何计算和运用的)

news2024/11/22 14:26:40

补码反码掩码以及原理

补码、反码和掩码是计算机科学中用于表示和处理数值的三种编码方式。

原码

原码是最直观的数值表示方法,它将数值的二进制表示与其符号位结合起来。在原码表示中,正数的符号位为0,而负数的符号位为1。原码的缺点在于它无法直接表示负数,因为在计算负数的时候需要进行特殊的处理。

反码

反码用于简化负数的运算。对于正数,其反码与原码相同;对于负数,反码是将原码除符号位外的所有位取反(0变1,1变0)。反码解决了原码在进行加减运算时需要额外的符号位转换的问题,但它仍然存在正负零的区分问题。
 

补码

补码是目前计算机中最常用的数值表示方法。对于正数,补码与原码相同;对于负数,补码是在反码的基础上加1。补码的优点在于它将符号位的概念和数值的表示统一起来,并且使得加法和减法运算统一化,简化了计算机内部的逻辑电路设计。

下面顺便提一嘴掩码,不过多赘述。

掩码

掩码通常用于位操作中,它是一个用于遮掩或选择特定位数的二进制数。在计算机编程中,掩码常用于位运算,比如设置或清除特定的位。通过掩码,可以很方便地控制数值的某几位是否参与运算或被设置为特定的值。

例如,如果要设置一个整数的第3位到第5位,可以构造一个掩码,其中只有这些位是1,其余位是0。然后将这个掩码与整数进行按位与操作,就能达到设置这些位的目的。
综上所述,补码、反码和掩码都是计算机中数值表示和处理的重要工具,它们各有特点和应用场景。补码广泛应用于计算机中的数值计算,反码在某些特定的数学运算中有所应用,而掩码则主要用于位操作和特定位的控制。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

C语言代码实例代码解释原码反码补码

解释:计算机里面进行数值的计算往往是补码进行计算,也就是在计算机里面进行计算是32位,如果数值是正整数的情况下32位的初始位从左到右的第一个位是0也就是符号位,如果是负数的情况下,从左到右初始位也就是符号位是1。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

画图实例:

 计算机是如何计算的

在计算机计算数值里面,计算机会把数值计算成

 这里我们拿代码进行举例

这里是正数的数值 正数的数值原码反码补码的数值是一样的

这里的数值是10来进行举例

这里需要知道的是,计算机进行计算转换的时候是把十进制的数值转换成二进制,然后把二进制计算成补码然后进行计算。

正数的计算是原码反码补码是一样的。

负数的原码反码不一样是有计算过程的

是在原码的基础上 取反+1

如图

这里我们需要知道,计算的时候数值是由32位的比特位组成,从右边向左边进行加减,也就是正常的加减乘除。如果是类型不一样的情况下,则会进行截断,也就是丢失数据,下面会进行讲解。

 计算机运用符号,按位与或者按位或计算期间是利用补码进行计算

计算完毕之后返回原路 也就是之前是取反+1

补码计算完成之后需要 补码取反+1 变成原码 呈现给你看

需要知道 32位 最前面的是符号位 0是正数 1是负数

——————————————————————————————————————————————————————————————————————————————————————

下面我们举两个例子

拿这个来举例

举例1:

代码解释 

所以-1是最特殊的 32位1 

下面会剖析为什么是32位 


举例2:

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

计算里面为什么是32位

32位环境

通常指的是一个计算机系统或操作系统的架构,其中处理器、内存地址以及其他硬件和软件资源都使用32位二进制数来表示。这意味着该系统可以处理的数据量最大为2的32次方(即4,294,967,296)个不同的值。
在32位环境中,

处理器的寄存器、内存寻址以及其他硬件参数都是32位的。这影响了系统的地址空间大小、可以处理的数据量以及可以同时运行的程序的大小。例如,32位系统上的内存地址空间最大为4GB(2的32次方字节),尽管实际上由于各种系统开销,可用内存可能少于这个量。
32位环境也可以指编译器或编程语言的执行环境,例如,某些编译器或编程语言可以在32位操作系统上运行,或者专门为32位处理器优化。


在操作系统方面

32位操作系统是指系统核心以及运行在系统上的应用程序都是为32位硬件环境设计的。这包括Windows XP、Windows 7等,它们都可以在32位处理器上运行。
在编程语言和工具方面,32位环境可能涉及到汇编语言、C语言、C++等编程语言,以及相关的开发工具和库,它们都是针对32位处理器架构的。

这里涉及到一些指针的知识简单的理解就是

首先,必须理解,计算机内是有很多的硬件单元,而硬件单元是要互相协同工作的。所谓的协同,至少相互之间要能够进行数据传递
但是硬件与硬件之间是互相独立的,那么如何通信呢?答案很简单,用"线”连起来
而CPU和内存之间也是有大量的数据交互的,所以,两者必须也用线连起来
不过,我们今天关心一组线,叫做地址总线

计算机中的编址,并不是把每个字节的地址记录下来而是通过硬件设计完成的。

钢琴、吉他 上面没有写上"剁、来、咪、发、唆、拉西”这样的信息,但演泰者照样能够准确找到每一个琴弦的每一个位置,这是为何?因为制造商已经在乐器硬件层面上设计好了,并且所有的演奏者都知道。本质是一种约定出来的共识!
硬件编址也是如此
32位机器有62根地址总线,每根线我们可以简单理解只有两态,表示0,1[电脉冲有无],那么一根线,就能表示2种含义,2根线就能表示4种含义,依次类推。32就能表示2^32种含义,每一种含义都代表一根地址线个地址
地址信息被下达给内存,在内存上,就可以找到该地址对应的数据,将数据在通过数据总线传入CPU内寄存器。

简单说就是每一个数值代表一个信号 比如01代表信号 11代表信号

可以简单理解为32位就是 2的32次方个信号 

这里就可以理解为 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django实例_后台管理及分页器

原理步骤参考: Django开发_14_后台管理及分页器-CSDN博客 一、创建Django项目 二、创建page_app python manage.py startapp page_app三、修改settings.py文件 (一)添加app (二)设置每页显示数据个数 (三)设置中文显示 四、总路由添加子路由路径 from django.contrib impo…

MD5算法:高效安全的数据完整性保障

摘要:在数字世界中,确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中,Message Digest Algorithm 5(MD5)算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…

C++初阶:入门泛型编程(函数模板和类模板)

大致介绍了一下C/C内存管理、new与delete后:C初阶:C/C内存管理、new与delete详解 我们接下来终于进入了模版的学习了,今天就先来入门泛型编程 文章目录 1.泛型编程2.函数模版2.1概念2.2格式2.3函数模版的原理2.4函数模版的实例化2.4.1隐式实例…

leetcode 27.移除元素(python版)

需求 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度…

Cocos creator 动作系统

动作系统简介 是用于控制物体运动的一套系统,完全依赖代码进行实现,动态调节节点的移动。 移动 cc.moveTo 移动到某个坐标(x,y) //1秒时间内,移动到0,0let action1 cc.moveTo(1,0,0)this.node.runAction(action1)c…

LeetCode.2670. 找出不同元素数目差数组

题目 题目链接 分析 一种暴力的方法,枚举数组所有数字,分别计算当前元素前面不同的元素和后面不同的元素,然后相减即可。这样的话太暴力,前缀和后缀也需要分别遍历:O(N*2)了。 我们来优化一下: 根据这种…

Git 介绍 与 配置

Git 介绍 Git是一个分布式版本控制系统,用于跟踪文件的更改和协作开发。它可以管理项目的版本历史记录,并允许多个开发者在同一时间进行并行开发。 解决上图产生的问题就出现了git 分布式版本控制系统 看下图 Git 配置 Git的基本配置包括用户名和电子邮…

基于深度学习的鸟类识别系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络基础 4.2 GoogLeNet模型 4.3 鸟类识别系统 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................…

使用Neo4j做技术血缘管理

目录 一、neo4j介绍 二、windows安装启动neo4j 2.1下载neo4j 2.2 解压文件 2.3 启动neo4j 三、neo4j基础操作 3.1 创建结点和关系 3.2 查询 3.3 更改 3.4 删除 四、技术血缘Demo实现 4.1 构建节点对象 4.2 构建存储对象 4.3 创建有属性关联关系 4.4 最后是图结果…

工业物联网接入网关在制造企业的实际应用-天拓四方

随着工业4.0和智能制造的兴起,工业物联网(IIoT)已成为工厂自动化的关键驱动力。在这个转变中,工业物联网网关扮演着至关重要的角色。它们充当了设备与企业系统之间的桥梁,实现了数据采集、分析和设备控制等功能。 案例…

微信开放平台第三方开发,实现代小程序认证申请

大家好,我是小悟 微信小程序认证整体流程总共分为五个环节:认证信息填写、平台初审、管理员验证、供应商审核和认证成功。 服务商可以代小程序发起认证申请。平台将对认证基础信息进行初步校验。通过后,平台将向管理员微信下发模板消息&…

实习日志8

1.捷通打印机 1.1.驱动问题(不支持RFID设置) 换一个驱动,报另一个错 找技术人员对接,换了个新驱动 查看端口 安装驱动(选择USB002) 1.2.rfid校验不准问题(纸张有空白) rfid未校验没…

数据库MySQL查询设计||给定四个关联表,其定义和数据加载如下:-- 学生表 Student-- 选课表 SC

SQL查询设计 给定四个关联表,其定义和数据加载如下: -- 学生表 Student create table Student(Sno varchar(6), Sname varchar(10), Sdate datetime, Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1999-01-01 , 男); insert into St…

解决Could not transfer artifact org.springframework.boot的问题

进行maven更新的时候,发现报错了 Could not transfer artifact org.springframework.boot,提示网络错误,搜了一下,应该是要忽略https 在maven设置中添加如下语句 -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.a…

微信投票小程序源码系统:无限多开,吸粉利器, 礼物道具,功能强大 带完整的安装代码包以及搭建教程

随着互联网的不断发展,社交媒体已成为人们生活中不可或缺的一部分。而微信作为中国最大的社交软件之一,拥有着庞大的用户群体和广泛的影响力。在这样的背景下,微信投票小程序应运而生。今天小编要向大家介绍的是一个功能强大的微信投票小程序…

STL标准模版在VS2019中的使用方法

STL标准模版在VS2019中的使用方法 1.STL在VS2019中的位置 1.STL在VS2019中的位置 1.1找到程序安装位置: D:\visual_studio\IDE\VC\Tools\MSVC\14.29.30133\include

塔罗牌+起名算命+占卜小程序源码系统 带完整的搭建教程

随着科技的发展,人们越来越依赖于技术来解决生活中的问题。塔罗牌、起名算命和占卜等传统服务也正在被数字化,以满足现代人的需求。塔罗牌起名算命占卜小程序源码系统应运而生,它不仅集合了传统服务的精髓,还结合了现代技术&#…

python-分享篇-贪吃蛇

文章目录 代码效果 代码 """贪吃蛇"""import random import sys import time import pygame from pygame.locals import * from collections import dequeSCREEN_WIDTH 600 # 屏幕宽度 SCREEN_HEIGHT 480 # 屏幕高度 SIZE 20 …

深入理解二叉树:遍历、构建与性质探索的代码实现

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C语言进阶之路 🌅 有航道的人,再渺小也不会迷途。 文章目录 前言一、二叉树的存储结构二、二叉树链式结构的实现三、二叉树的前、中、后续遍历&…

新书速览|Docker与Kubernetes容器运维实战

帮助读者用最短的时间掌握Docker与K8s运维技能 内容简介 随着云计算和容器技术的发展,Docker与Kubernetes已经成为各个企业首选的部署工具,使用它们可以提高系统的部署效率和运维能力,降低运维成本。本书是一本为初学者量身定制的Docker与Kub…