C语言学习5:机器数、真值、原码、反码和补码详解
目录
1.前言
2.机器数
3.真值
4.原码
5.反码
6.补码
1.前言
上篇博文中,笔者介绍了计算机存储器存储容量大小的常用单位 。在未来,我们还会接触到各种各样的数据类型,并且这些数据在运算的过程中会占用电脑的内存。而参与计算机运算的数,从根本上来讲有两大类:有符号数和无符号数。那么计算机如何去判断一个有符号数的正负呢?这就需要我们对机器数、真值、原码、反码和补码有所了解(网上也有许多质量优秀的教程,笔者在此仅作总结归纳)。
2.机器数
机器数 英文名 computer number 。它是将符号 “数字化” 的数,是数字在计算机中的二进制表示形式(存在正负之分)。在一串二进制码中,用最高位来表示正负,“0” 代表正、“1” 代表负。
例:二进制码 0111,最高位(左边第一个红色数字,也叫符号位)用来表示符号的正负,由 “0”可知该数的符号为正,所以二进制码 0111 转换成十进制为 7。同理,二进制码 1111 转换成十进制为 -7。二进制码 001001转换成十进制为 9。而以上的 0111 、1111 和 01001 就是机器数。
拓展:机器数的2个特点:
①符号数字化(即“0” 代表正、“1” 代表负)。
②大小受机器字长的限制。
3.真值
真值 就是机器数所对应的真实的值。因为机器数的最高位(符号位)只用来判断符号的正负,得到的并不是表面上展现的值(形式值),所以需要借助 真值 来表示它实际的值。
例:二进制码 1111 不考虑最高位(符号位)用来判断正负,其值转换成十进制应该是15(形式值),实际上最高位(符号位)用来判断正负,所以它转换成十进制的真值应该是 +7,而不是15。同理:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1。综上所述,带符号位的机器数所对应的真正数值,也可称为机器数的真值。
4.原码
原码 是一种计算机中对数字的二进制定点表示方法,是最简单的机器数表示法。用最高位表示符号即(“0” 代表正、“1” 代表负),其他位存放该数的二进制的绝对值。
例: 用8位二进制表示一个数,+11 的原码为 00001011,-11 的原码就是 10001011。
拓展:原码的特点:
①原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为 0,负数该位为 1(0有两种表示:+0 和 -0),其余位表示数值的大小。
②原码不能直接参加运算,可能会出错。因为原码最大的问题就在于一个数加上他的相反数不等于零。例如:0001+1001=1010 (1+(-1)=-2) 0010+1010=1100 (2+(-2)=-4)。
5.反码
反码 是数值存储的一种,多应用于系统环境设置。它的表示方式为:正数的反码是其本身(原码),负数的反码就是他的原码除符号位之外,按位取反。
例: [+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
6.补码
补码 是用来解决负数在计算机中的表示问题的。它的表示方法是:
正数的补码就是其本身(原码),负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
例:[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
拓展:为什么要使用原码、反码和补码?
简言之,简化电脑运算,使之不出错。
—————————END————————— 往期回顾
★C语言学习1:从下载编译软件开始!DEV-C++、VC6.0、VS2010、VS2017等编译器的下载(Windows系统)
★C语言学习2:Hello World!详解
★C语言学习3:常量、变量和数据类型
★C语言学习4:Bit、Byte、KB、MB、GB、TB、PB简述及单位换算
C语言学习5:机器数、真值、原码、反码和补码详解相关推荐
- [例题详解]真值 机器数概念 | 原码 反码 补码 移码 概念及加减计算
目录 真值和机器数 原码 反码 补码 移码 对比记忆 | 原 反 补 移码 加减法 | 原码 补码 结语 | 大学生学习复习资料 真值和机器数 真值:-5.+10 机器数(带符号数)(= 符号位 [0 ...
- 计算机真值范围,计算机的机器数,真值,原码, 反码和补码
机器数 一.数的符号数值化.实用的数据有正数和负数,由于计算机内部的硬件只能表示两种物理状态(用0和1表示),因此实用数据的正号"+"或负号"-",在机器里就用 ...
- 计算机原码、反码、补码详解
注:之前查找了关于原码.反码.补码的相关资料,张子秋的博客:原码, 反码, 补码 详解讲的比较透彻.为了方便,现将其转载至此,版权归原作者所有.更加深入的分析,可以参考作者的原文. 本文大部分内容来源 ...
- 原码,反码,补码详解及原理
原码,反码,补码详解及原理 原码 原码:在数值前直接加一符号位的表示法. 例如: 符号位 数值位 byte的取值范围 [+7]原= 0 0000111 B[-7]原= 1 0000111 B 注意: ...
- 真值、机器数、原码、补码、反码详解(你想知道的全都有!)
计算机组成原理中的数值表示法 真值 机器数 原码 反码 补码 真值 在日常的书写习惯中,往往用正.负号加绝对值表示数值,用这种形式表示的数值为真值. 简单来说 真值 就是我们平时用的数本身 机器数 在 ...
- 机器数,原码,反码,补码,移码
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 在计算机中所有的数据的保存均是用二进制来实现的,而二进制的表示则是一串的0,1组成.而在计算机的表达中有着机 器数和原码,反码,补码和移码 ...
- c语言 原码反码和补码
计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的. 原码 一个数的原码(原始的二进制码)有如下特点: 1.最高位做为符号位,0表示正,为1表示负 2.其它数值部分就是数值本身 ...
- 真值 原码 反码 补码
计算机中只能做加法运算,它的减法是通过加法来实现的 原码,反码,补码的产生过程,就是为了解决计算机做减法和引入符号位的问题 真值 正数或负数的真值 → 为其绝对值对应的二进制数前面加上正号或负号 例如 ...
- java用的原码还是反码_java 原码 反码 和补码
--------- 原码.补码.反码 计算机是数字电路设备,由复杂的电子元器件组合而成,一个电子元器件在工作时,可以分为两种状态--高电平和低电平,表示数据用高电平表示1,低电平表示0,而多个电子元器 ...
- 原码、反码、补码详解
文章转自: http://c.biancheng.net/ 文章目录 1. 原码 2. 反码 3. 补码 4. 补码到底是如何简化硬件电路的 5. 实例分析 1. 原码 将一个整数转换成二进制形式,就 ...
最新文章
- oozie调度中的重试和手工rerun一个workflow
- 学习flask的网址
- golang 代码安全审计
- 62 Celery远程调用
- Java中getMessage()和printStackTrace方法
- 6000字,详解数据仓库明星产品背后的技术奥秘
- android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度
- 对话阿里云叔同:释放云价值,让容器成为“普适”技术
- php获取jsp的session的值,在JSP或Servlet中获取session数量
- 【Flink】flink1.11报错No ExecutorFactory found to execute the application
- 【报告分享】2021年品牌CDP与营销数字化转型报告.pdf(附下载链接)
- 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
- View的复用:viewHolder
- java随机百分比_java随机百分比
- Json与List、Map、entity的互相转化
- oracle删sequen,sequen是什么意思
- 对比 GA 、PSO 、DE三种算法 求解连续优化问题的性能
- 【NAS】群晖使用自带DDNS实现外网访问
- 关于objectArx /CAD二次开发中“绘制点、线、圆、圆弧、多段线、矩形、文字等”
- Matlab2019 slrt(XPC)目标机U盘启动