当前位置:网站首页>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. 致读者
谢谢大家的阅读
边栏推荐
猜你喜欢

Machine Learning Overview

write the story about us

狗仔队:表面编辑多视点图像处理

Android interview question - how to write with his hands a non-blocking thread safe queue ConcurrentLinkedQueue?

银行数据采集,数据补录与指标管理3大问题如何解决?

iMedicalLIS listener (2)

Four-digit display header design

C++ core programming

Paparazzi: Surface Editing by way of Multi-View Image Processing

Event parse tree Drain3 usage and explanation
随机推荐
C+ +核心编程
overloaded operator
Is the NPDP certificate high in gold content?Compared to PMP?
Bosses, I noticed that a mysql CDC connector parameters scan. The incremental. Sna
日志导致线程Block的这些坑,你不得不防
bytebuffer internal structure
BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险
【背包九讲——01背包问题】
mutillidae下载及安装
1007 Climb Stairs (greedy | C thinking)
UE4 第一人称角色模板 添加蹲伏功能
pyqt5 + socket 实现客户端A经socket服务器中转后主动向客户端B发送文件
Redis key基本命令
数字孪生技术在电力系统中的应用现状
Event parse tree Drain3 usage and explanation
什么是ASEMI光伏二极管,光伏二极管的作用
Cron(Crontab)--use/tutorial/example
bytebuffer 使用demo
App快速开发建设心得:小程序+自定义插件的重要性
The production method of the powered small sailboat is simple, the production method of the electric small sailboat