当前位置:网站首页>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. 致读者
谢谢大家的阅读
边栏推荐
- UE4 在游戏运行时更改变量 (通过鼠标滑轮来更改第一人称角色的最大行走速度)
- UI自动化测试 App的WebView页面中,当搜索栏无搜索按钮时处理方法
- bytebuffer 使用demo
- What is the function of industrial-grade remote wireless transmission device?
- Mysql的redo log详解
- 【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
- Spark基础【介绍、入门WordCount案例】
- 如何解决复杂的分销分账问题?
- DNS被劫持如何处理?
- The most effective seven performance testing techniques of software testing techniques
猜你喜欢

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

UE4 通过重叠事件开启门

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

Detailed explanation of Mysql's undo log

七夕节代码表白

How to wrap markdown - md file
![[BSidesCF 2019]Kookie](/img/29/19e7c244feb86b37ab32a53aa11f25.png)
[BSidesCF 2019]Kookie

iMedicalLIS listener (2)

Ali's local life's single-quarter revenue is 10.6 billion, Da Wenyu's revenue is 7.2 billion, and Cainiao's revenue is 12.1 billion

BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险
随机推荐
DEJA_VU3D - Cesium功能集 之 058-高德地图纠偏
36-Jenkins-Job Migration
token, jwt, oauth2, session parsing
UI自动化测试 App的WebView页面中,当搜索栏无搜索按钮时处理方法
Is the NPDP certificate high in gold content?Compared to PMP?
DEJA_VU3D - Cesium功能集 之 059-腾讯地图纠偏
[8.3] Code Source - [meow ~ meow ~ meow~] [tree] [and]
数组常用方法总结
Bytebuffer put flip compact clear method demonstration
[BSidesCF 2019]Kookie
事件解析树Drain3使用方法和解释
Redis key基本命令
dedecms报错The each() function is deprecated
程序开发的一些常规套路(一)
Hard power or soft power, which is more important to testers?
小程序_动态设置tabBar主题皮肤
MySql index learning and use; (I think it is detailed enough)
Mysql的redo log详解
AUTOCAD - dimension association
The production method of the powered small sailboat is simple, the production method of the electric small sailboat