C语言学习&C程序设计——信息的表示与存储——进制表示和原码、反码和补码

今天我们来看看计算机中的信息是怎样表示和存储的。

信息的表示和存储

首先让我们来看看计算机中信息是以何种形态表示的

计算机中的信息都会被计算机转化为“0”和“1”的二进制形式。之所以会采用二进制表示的原因有以下几点:
(1)在物理层面上,原理简单,容易实现,而且可靠性高。
(2)以二进制形式进行运算会简化运算,且通用性很强。
(3)便于表示和进行逻辑运算。“0”和“1”与“假”和“真”相互吻合。

计算机中的数字系统

说起数字系统,我们最熟悉的就是十进制数字系统,十进制在日常生活中十分常用。在十进制中,数字符号有:0,1,2,3,4,5,6,7,8,9。逢十进位。
而在计算机中,我们却不使用十进制,而是使用二进制。而二进制中,数字符号有:0,1,逢二进位。

在数字系统中,用r个基本符号(0,1,2,···,r-1)表示数值,称其为r进制数,r称为该数的基数,而数制中每个位置对于的单位值称为位权

以下是我们常用的几种数字系统
在这里插入图片描述
我们再来看看各个进制之间的关系
以上是进制之间的转换
对于任意一个数而言,数的表示也可以使用位置表示法,各种进位计数制的权值正好是r的某次幂。因此,任何一种进位计数制表示的数都是可以写成一个多项式之和

然后我们来了解一下进位计数制的转换

进位计数制的转换

1.十进制转换成r进制数

由于整数部分和小数部分的转换方法不同,将十进制数转换为r进制数时,可以分别按照整数部分和小数部分转换,然后将结果相加即可

十进制整数转换成r进制数的方法是除r取余法:即将十进制整数不断除以r取余数,直到商为0,先得到的余数是a0,最后得到的余数是a(n-1),则a(n-1) a(n-2) … a(1) a(0)就是转换后的r进制数。其中括号内的为下标。

十进制小数转换成r进制数的方法是乘r取整数:即将十进制小数不断乘以r取整数,直到小数部分为0或达到要求的精度为止,先得到的整数是a(-1),自左向右排列,则a(-1) a(-2) …就是转换后的r进制小数。

2.r进制数转换成十进制数

将任意r进制数按照位权写成的多项式,各个数码乘以各自的权值且累加起来,就得到该r进制数对应的十进制数。

3.二、八、十六进制数相互转换

二进制数转换成八进制时,以小数点中心向左右两边分组,每3位为一组转换成相应的八进制数,两头不足3位用0补足。

二进制数转换成十六进制时,以小数点中心向左右两边分组,每4位为一组转换成相应的十六进制数,两头不足4位用0补足。

八进制数转换成十六进制或十六进制转换成八进制时,可以借助于二进制。

最后我们来看一下计算机中数的表示

整数在计算机中的表示

一个数在计算机中的表示形式称为机器数

一个有符号数的组成是:符号位(首位)+数值位
一个无符号数的组成是:数值位

而在计算机中,当一个带有符号位的数(带符号数的首位是0为正数,首位是1是负数)参与运算时,又是会产生错误的结果。例如00000101+10000101的结果并不是0.如果在运算时另考虑符号位计算的话,会增加计算机的运算难度,于是有了原码反码补码

我们先来看看原码

原码:整数X的原码是符号位0表示正,1表示负,数值位是X绝对值表示的二进制数,记为(X)。假如n为字长,原码表示数的范围就是-(2n-1-1)~2n-1-1

原码表示法编码简单,但是缺点就是运算时要单独考虑符号位和判别0,增加了运算规则的复杂性。

反码:整数X的反码是:对于正数,反码就是原码;对于负数,符号位为1,数值位为原码中数值位按位取反。X的反码记为(X)

对于计算机而言,反码运算也是很有难度的,因此很少使用,一般用来求补码。

补码:整数X的补码是:对于正数,补码与原码、反码相同;对于负数,符号位为1,其数值位为反码加1.X的补码记为(X)

补码的实质就是对负数的表示进行不同的编码,从而方便地实现了正负数的加法运算且规则简单。在数的有效表示范围内,符号位如同数值位一样参与运算,也允许最高位的进位(被丢弃)。

注意:

机器数、原码、反码和补码等编码都是需要在特定的字长下讨论的。

本篇到此结束,希望能对大家的学习有所帮助,如有错误还请指出,谢谢大家浏览。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破镜重圆,终有裂痕170

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值