当前位置:网站首页>C语言-大白话理解原码,反码和补码
C语言-大白话理解原码,反码和补码
2022-08-05 04:18:00 【π指针】
谢谢读者的阅读
原码,反码和补码
1.理解存储类型
- 数据分为字节型和字型数据
字节型数据占8位,它的原码,反码,补码都是8位,表示0-255
字型数据占16位,它的原码,反码,补码都是16位, 表示0-65535 - 那么就有人会有疑问:8位二进制和16位二进制都为1 当然可以代表255或者65535是没错,但是我又可以代表-127,-32767呀。且慢既然这么说,那么我们是不是就肯定要搞清楚是什么存储方式了,是无符号存储还是有符号存储?
- 在8个位中,如果是无符号存储-那就是0-255没有负数,如果是有符号数那么他自己都要占用一个位所以表示为-127-128。
所以得知,我们的C语言int类型没有写unsigned的时候也是一个有符号数,他的范围是-2147483648~+2147483647,而有符号数为4,294,967,295 - 那么原码是什么存储?我们讨论原码是讨论他是有符号还是无符号的?很负责任的告诉大家,这是一个有符号的,所以我们去看八位的原码或者十六位的原码,一看就知道他是正或者是负了
2.原码,反码,补码
1.抛出三码概念
原码 :最高位是符号位,0代表正数,1代表负数,其他是0或1。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,符号位不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
例子 00000001 (由原码得出 十进制是1)
例子 10000001 (由原码得出 十进制是-1??)
那么是不是就?
00000001
+ 10000001
------------
10000010
1+(-1) = -2??
离谱!!!!
- 但是我负责任的告诉你,这就是-1,但是直接算,肯定就不是这样算。要进行二进制的加减法,最后还是变成加法进行的。
我们是否有一个疑问,计算机-1+1直接算就不等于0了,那么计算机该怎么办,怎么算才可以等于0? - 我们要找出1+(-1)=0,使其成立,那么我们假设 -1有一个替补,是八位的未知数x
00000001
+ xxxxxxxx
------------
00000000
- 可以得到如果是11111111加1 变成100000000就会造成位运溢出,丢失最高位1,那么这不就是十进制的0吗?所以我敢肯定 要加上(-1)等于0,就是加上他的替补,他就是就是111111111
- 原来是这么算,除了最高位以外,我全部都取反 然后再+1
也正是这样,补码的概念也是如此,就是原码除了最高位后其余取反 然后 +1,然而他的正面计算过程是
例 10000001 原码
想变补码先变反码才可以,按位取反,除了最高位的符号位
例 11111110 反码
变为补码,只需要在反码后面加1就可以
例 11111111 补码 (原码除了最高位取反 然后+1)
所以,某种意义上这就变成了 1 + (-127) = 0了,但是大家别搞混,这样理解会有压力
我们还是老老实实的理解成:计算用的都是正数或者负数的补码进行计算的。
2.最后总结
引入原码 反码 和补码的目的就是为了解决减法问题,因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算。
3. 致读者
谢谢大家的阅读
边栏推荐
- 虚证、实证如何鉴别?
- The log causes these pits in the thread block, you have to guard against
- Some conventional routines of program development (1)
- [informix] Resolving startup errors and solutions
- [8.1] Code Source - [The Second Largest Number Sum] [Stone Game III] [Balanced Binary Tree]
- 四位数显表头设计
- [SWPU2019]Web1
- UE4 opens doors with overlapping events
- Develop your own node package
- 1007 Climb Stairs (贪心 | C思维)
猜你喜欢

阿里本地生活单季营收106亿,大文娱营收72亿,菜鸟营收121亿

Spark基础【介绍、入门WordCount案例】

markdown如何换行——md文件
![[MRCTF2020]PYWebsite](/img/d4/57e8e5ee45b742894679f3f5671516.png)
[MRCTF2020]PYWebsite

Visibility of multi-column attribute column elements: display, visibility, opacity, vertical alignment: vertical-align, z-index The larger it is, the more it will be displayed on the upper layer

bytebuffer use demo

Qixi Festival code confession

Detailed explanation of Mysql's undo log

程序开发的一些常规套路(一)

数字孪生技术在电力系统中的应用现状
随机推荐
There are a lot of 4T hard drives remaining, prompting "No space left on device" insufficient disk space
Redis key基本命令
UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
重载运算符
银行数据采集,数据补录与指标管理3大问题如何解决?
UE4 第一人称角色模板 添加生命值和调试伤害
工业级远距离无线传输装置的功能有哪些?
NPDP证书含金量高吗?跟PMP相比?
flink读取mongodb数据源
Develop your own node package
如何解决复杂的分销分账问题?
AUTOCAD——标注关联
Qixi Festival earn badges
bytebuffer 使用demo
token, jwt, oauth2, session parsing
cross domain solution
[8.3] Code Source - [meow ~ meow ~ meow~] [tree] [and]
pyqt5 + socket 实现客户端A经socket服务器中转后主动向客户端B发送文件
狗仔队:表面编辑多视点图像处理
动力小帆船制作方法简单,电动小帆船制作方法