什么是原码:所有数转化成二进制的序列就是原码【正数原反补相同】

什么是补码:原码通过取反得反码,反码+1得补码【负数存的是补码】

所有信息在计算机在内存中,都是由二进制方式存储

计算机自能进行加法运算

什么是原码,补码,反码呢?

他们之间是怎么相互转化的呢?

计算机是怎么实现5+3的?

计算机是怎么实现5-3的呢?

、、、

下面我们来详细讲解:

首先我们都知道

#include<stdio.h>
int main() {printf("%d\n", sizeof(char));//1printf("%d\n", sizeof(unsigned char));//1printf("%d\n", sizeof(int));//4printf("%d\n", sizeof(unsigned int));//4printf("%d\n", sizeof(float));//4printf("%d\n", sizeof(double));//8return 0;
}

每一个字节=8个比特位【例如01010101就是八个比特位】


正文

int a=3电脑把3存进整型a,是记录的3吗?

首先,电脑是通过二进制存储信息,所以必然不是3;

3转化为二进制:11

5转化为二进制:101

注意,存入大小为4个字节的a里面,a是32个比特位,11和101存入电脑变成了

3-> 00000000 00000000 00000000 00000011   原码

5-> 00000000 00000000 00000000 00000101   原码

也就是补零,补够32位

电脑存储3和5,存储的就是这两串二进制序列

那搞明白了3和5存储方式,那3+5在电脑中是怎么实现的呢?

可不是简简单单的3+5;

存什么,自然用什么加

3+5

00000000 00000000 00000000 00000011

+

00000000 00000000 00000000 00000101

=对应的位相加(满2进1)

00000000 00000000 00000000 00001000

00000000 00000000 00000000 00001000

方便点看=1000 ->8

3+3呢?

为了方便看,省略些零

00000011

+

00000011

=

00000110


那么负数呢?负数是怎呢存储的呢?

3

00000000 00000000 00000000 00000011

显然-3,需要一个东西表示符号即可

于是规定:进制的首进制位为符号位【1表示负,0表示正】

-3

10000000 00000000 00000000 00000011   原码

但电脑真就把这一串二进制的原码存进电脑里吗?

对于负数,电脑存的并不是其二进制的原码,而是二进制原码进行相关转化后得到的补码

怎么得到补码呢?

原码(除符号位,其余取反)->  原码(加1)->  补码

具体如下

-3原码   10000000 00000000 00000000 00000011

-3反码   111111111 111111111 111111111 111111100

-3补码   111111111 111111111 111111111 111111101

电脑存入负数的补码

电脑通过对其不同数字的补码进行运算,从而得出结果;【正数的原反补相同】

5-3=2

5的补码   00000000 00000000 00000000 00000101

+

-3的补码  111111111 111111111 111111111 111111101

=

2的补码:00000000 00000000 00000000 00000010

【本来是100000000 00000000 00000000 00000010】【前面突出的1截断掉】

又因为正数原=反=补

所以

2的原码00000000 00000000 00000000 00000010

翻译就是2

注意,计算机只能做加法

5-3是通过5+(-3)实现的

同理-3

原1000 0000 0000 0011【方便观看简单写】

反1111 1111 1111 1100

补1111 1111 1111 1101

…………………………………………………………………………………………………………

补1111 1111 1111 1101【原先是反码+1得补码,按理-1得反码,但是计算机只有加法

反=

补1111 1111 1111 1101【-3的补码】

+

1111 1111 1111 1111 【-1的补码】不是简单的+(-1);对像是补码,自己也要化为补码

= 1111 1111 1111 1100  【例如111+111=11110】

取反

1000 0000 0000 0011【变回来了】

以上就是原码,反码,补码,加法减法在计算机内存中的运算方法

如有错误请纠正与讨论

原码,反码,补码,加法减法在计算机内存中的运算方法相关推荐

  1. Debug和release版本区别 原码反码补码的转换及存储

    #define _CRT_SECURE_NO_WARNINGS 1  //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...

  2. 【软考学习2】数据表示——原码 反码 补码 移码

    原码 反码 补码 移码是软考必考的项目,所以需要对其概念.计算方式和取值范围进行总结. 零.使用场景 原码 反码 补码 移码都是计算机中表示数据的方式,各有所长,对于我们来说,都需要加以学习. 软考中 ...

  3. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  4. 计算机组成原理——基本组成 进制转化 奇偶校验 原码 反码 补码 移码 移位 原码补码乘法除法 IEEE754 加法器ALU

    笔记来源于王道考研视频 第一章 通过电信号传递信息(低电平代表0,高电平代表1) 计算机系统 计算机系统=硬件+软件 软件 系统软件 应用软件 操作系统,数据库管理系统(DBMS),标准程序库(编程时 ...

  5. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  6. 【计算机组成原理】原码 反码 补码 移码的转换

    原码 反码 补码 移码的转换 这三种机器码都是二进制数据的表现形式,可以表现正数和负数. 原码是可以直接表现出数据的正负和大小. 正数的原码.反码和补码都是相同的. 反码用于原码和补码的转换的功能. ...

  7. 原码, 反码, 补码, 移码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  8. 原码 反码 补码 详解

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...

  9. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

最新文章

  1. Oh My Zsh终端工具
  2. 使用osql.exe, 将Select的内容保存为文件
  3. Java客户端操作zookeeper:删除节点代码示例
  4. css中position的两种定位(absolute、relative)
  5. MS的完整形式是什么?
  6. 从数据库层面手动删除zabbix告警
  7. HTTP Status 500 - javax.servlet.ServletException: File [/head.jsp] not found
  8. 乔布斯首份手写求职信再次被拍卖
  9. React Native悬浮效果组件
  10. python聚类分析超市_Biopython聚类分析
  11. 如何在微信公众号优雅地添加代码
  12. grub引导删除双系统中的linux的正确姿势
  13. 反函数抽样(包括离散的)
  14. 单片机学习(三)8位数码管显示8个字符的程序及详解
  15. linux 下显示隐藏文件夹
  16. RCAN论文笔记:Image Super-Resolution Using Very Deep Residual Channel Attention Networks
  17. 鸡尾酒会算法 --- 公式
  18. 个推里群推php教程,GitHub - lyx2297999137/yii2-igetui: yii2个推
  19. Excel数据透视表、数据透视图
  20. Python和Matlab生成图片到visio的矢量图

热门文章

  1. suse11sp3上面配置zypper源
  2. 股票及炒股票的基础知识
  3. python中for循环在遍历文件内容时的问题
  4. Python Flask Web教程002:Flask 快速上手
  5. Wiley-中国科学院文献情报中心开放科学联合研讨会第二讲:开放获取期刊选择及论文投稿...
  6. Python 获取当前系统时间
  7. flask 发送新浪邮箱邮件
  8. 软件测试报告编写指南
  9. python脱离环境运行_python 生成exe脱离python环境运行
  10. CentOS-8操作系统