原码、反码、补码的转换
数字在机器中都用二进制来进行存储,有符号数则有原码、反码和补码三种表示方式
这三种表示方式里,最高位都代表的是符号位,1代表负数,0代表正数
1.原码
一个数的原码就是该数直接转化成二进制得到的数字,第一位是符号位
+8的原码:0000 1000
-8的原码:1000 1000
2.反码
正数的反码是自己本身
+8的原码:0000 1000
+8的反码:0000 1000
负数反码就是原码除了符号位不动,其他所有位按位取反
-8的原码:1000 1000
-8的反码:1111 0111
3.补码
正数的补码是自己本身
+8的原码:0000 1000
+8的反码:0000 1000
+8的补码:0000 1000
负数的补码是反码加一得到的(运算时包括符号位)
-8的原码:1000 1000
-8的反码:1111 0111
-8的补码:1111 1000
正数的原反补码都是相等的,负数的原反补码是相互转换得到的
4.补码存在的意义
在机器中,数值一律用补码来表示和存储。
使用补码的原因:
- 使用补码可以将符号位和数值域统一处理
- 两个数字之间进行加减法运算时是将数字拿到CPU中进行计算的,而CPU只有加法器,要将减法转换成加法,所以可以利用补码使加减法统一操作
举个例子
计算 8 - 5
因为CPU只有加法器所以要将 8 - 5 转换成 8 + (- 5) 来计算
(+8)
8的原码:0000 1000
8的反码:0000 1000
8的补码:0000 1000
(-5)
-5的原码:1000 0101
-5的反码:1111 1010
-5的补码:1111 1011
8 - 5 = 8+(-5)
0000 1000
+1111 1011
-----------------
0000 0011
0000 0011的符号位是0,则表示正数,原反补码都相同,转化成十进制就是3
代码测试
int main()
{int i = 8;int j = -5;int m = i + j;printf("%d\n", m);return 0;
}
结果得到
我们利用调试看一下内存中存放的数据
首先查看 i 的地址里存放的数据
看到他在内存中存的是 08(这里是16进制)转换成二进制就是 0000 1000( 8 的补码)
之后我们看一下 j 的地址里存放的数据
这里存的是 fb 转化成二进制就是 1111 1011(这里就是 -5 的补码)
所以数据在机器中以补码形式表示和储存,补码的出现也更加便于计算
原码、反码、补码的转换相关推荐
- Debug和release版本区别 原码反码补码的转换及存储
#define _CRT_SECURE_NO_WARNINGS 1 //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...
- 【实验作业】微处理器原理与应用 CPUHomework2.1【二进制 原码 反码 补码 数制转换 典型例题】
一.选择题 1.一个四位二进制补码的表示范围是(B) A.0-15 B.-8-7 C.-7-7 D.-7-8 2.十进制数- 48 用补码表示为(B) A.10110000 B.11010000 C. ...
- 原码 反码 补码的相互转换
原码 反码 补码的相互转换 原码 反码 补码的转换 还是比较 简单基础的问题.之前学习java的时候就学过,后来忘记了,忘记了!!!,后来学了位移运算符,左移 右移 无符号右移 之后就由有点儿懵了. ...
- python二进制反码例题_python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...
- 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)
目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...
- day017:Java进制转换、原码反码补码、位运算、位移运算符
一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...
- 【计算机组成原理】原码 反码 补码 移码的转换
原码 反码 补码 移码的转换 这三种机器码都是二进制数据的表现形式,可以表现正数和负数. 原码是可以直接表现出数据的正负和大小. 正数的原码.反码和补码都是相同的. 反码用于原码和补码的转换的功能. ...
- 原码 反码 补码 之间在小数正数间的转换
原码 反码 补码 之间在小数正数间的转换 基本转换 对于正数 原码等于反码等于补码(小数也一样) 对于负数 原码除了符号位取反即反码 反码基础之上+1即补码 但是在遇到某些题时候还是会混淆,比如三者在 ...
- Java进制转换、原码反码补码
一.负数的表示 最高位(最左侧的位)是用来表示正负的.0代表的整数,1代表负数.最高位称为符号位. 0b0000 1000 所表示的数字是 8 0b1000 1000 所表示的数字是 -8 二.原码反 ...
- 原码反码补码之间运算转换
1. 正数的原码=反码=补码 2. 负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+ ...
最新文章
- 用户管理之用户的查询获取
- C#调用系统默认打印机打印文字和图片
- 网站SEO优化、IIS日志分析工具 IISLogViewer V2.0 发布
- boost::polygon模块实现自定义polygon相关的测试程序
- TFBOY 养成记 一些比较好多文章。
- JS笔记:检测客户端(引擎、浏览器、平台、操作系统)
- 在云服务器搭建WordPress博客(六)发布和管理文章
- 会议交流 | 2021年全国知识图谱与语义计算大会(CCKS 2021)征稿通知
- 大数据时代科研不能再两头花钱
- SVS为某大学打造无纸化会议室
- multisim的汉化
- Android 多语言切换
- Win11如何增强麦克风?Win11增强麦克风的设置
- 数据库之SQL更新语句中update set from用法
- 上海最新住房贷款(含公积金贷款,商业贷款,组合贷款)
- 计算机科学与技术专业就业方向及前景如何?
- JavaScript进阶(6)-全选练习
- 论文阅读06——《CaEGCN: Cross-Attention Fusion based Enhanced Graph Convolutional Network for Clustering》
- git tag怎么使用_这才是真正的 Git:Git 内部原理揭秘!
- python中numpy-choice函数
热门文章
- [Store:280040]An invalid record was found in the store: Code=30
- Photoshop巧为女友添加五彩眼影!
- GoogLeNet系列论文
- 为什么 LeetCode(力扣)「执行代码」正确,提交代码出错?
- fedora Chrome出现adobe flash is out of date的解决方法
- tv端h5_H5展现接口 - 阿里TV开放平台文档 - php中文网手册
- java list对象排序_Java 对象集合List排序的5种方式
- word文件上的电子签章的法律效力如何保证?
- 利用计算机录音先编码线采样,2010-2011(2)计算机应用基础期末理论复习题
- 基于python3 pyppeteer的漫画爬虫及下载项目PiaoManga