热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

计算机信息的表示与编码,计算机信息表示与编码知识分析

p摘要:计算机信息的表示与编码一直是困扰初学者的一个难题,通过对计算机信息的表示、信息的单位、信息的编码这三部分的深入探讨和讲解,让初学

p>摘要:计算机信息的表示与编码一直是困扰初学者的一个难题,通过对计算机信息的表示、信息的单位、信息的编码这三部分的深入探讨和讲解,让初学者对计算机内部原理有了一个启发性的了解,为进一步学习计算机知识打下坚实基础。

关键词:信息表示;信息编码;信息单位;内部原理

引言

随着计算机的流行和普及,各种类型的微型计算设备(pad、surface)已经深入到各家各户,越来越多的人加入到学习计算机知识、研究计算机原理的队伍中来。学习计算机知识绝不仅仅是学习类似office那样的简单操作,而是需要研究计算机原理和软硬件等知识。目前计算机的研究方向已经十分细化,从大的方向上说,比如软件、硬件、网络、人工智能等等都是目前热门的研究方向。以软件为例,计算机的工作是通过软件控制的,而软件是用程序编写的,程序是指令的集合,而指令就是计算机可以识别的命令,这些命令都是计算机中的控制信息和数据信息。归根结底,我们首先要理解信息在计算机中是如何存储和表示的。

1、信息的表示

计算机内部的信息可以分成两大类:数据信息和控制信息。数据信息是计算机程序加工的对象,包括数值信息(定点数和浮点数等)和非数值信息(图像和声音等)。控制信息是一些控制计算机操作的指令。无论是数据信息还是控制信息,在计算机中都是用二进制数据表示的。也可以说计算机中的数字系统是二进制系统。这种二进制表示法和我们平时习惯使用的十进制大不相同。二进制里面的数字只能由0和1构成,进位原则是逢二进一。为什么在计算机中用二进制来表示数据呢?因为电路中最稳定的状态就是两种状态,所以用着两种状态分别表示0和1最为恰当。因此在计算机中用二进制表示数据比较容易物理实现。另外二进制的数字运算更为简单,因为只有两个数字0和1。当然,二进制对于人来说可读性比较差,因此在计算机高级语言的书写中并不直接用二进制,而是要把源程序编译以后得到二进制的机器语言。

2、信息的单位

上面已经讲到,计算机中所有的信息都是用二进制来表示的,虽然有时在编程的时候用八进制或者十六进制表示一些信息,但是在计算机中都会将这些进制数转化成二进制表示,只是在展现的时候出现多样化的信息。计算机中信息的单位和二进制也息息相关。信息存储的最小单位就是位,一个位就是一个二进制位(0或1),用小写字母b表示。由位可以组成字节,在计算机中一个字节是由8个二进制位组成的,用大写字母B表示。在计算机中表示文件大小或内存大小的单位一般为KB,表示千字节。1KB=1024B,还有更大的单位兆字节即MB,1MB=1024K。更大的还有吉字节GB,以此类推,1GB=1024M。

3、信息的编码表示

在计算机中的数据虽然是用二进制表示的,但绝不是仅仅将数据化为二进制数这么简单,单就数字和运算来说,首先要对正号和负号做出不同的表示,这里正号和负号恰好可以用一位二进制数0和1来表示。这里我们用0代表正号,1代表负号。比如十进制25就可以表示为011001,而-25则可以表示为111001,可以看出,只有第一位不同,后面的相同。对于相同长度的二进制数,在计算机中如果仅第一位不同,后面的所有位都相同,则可以断定这两个数符号不同,绝对值相同。在计算机中当需要对两个数进行加减运算的时候,符号位0或1要参与运算,这就带来了一些麻烦,这里符号位要单独处理才行。比如两个数都是正数(符号位为0)则结果的符号位也为0,两个数都是负数(符号位为1)则结果的符号位也为1。倘若两个数符号位相反即一个是正数,一个是负数的话,则需要比较两个数的绝对值大小才能判断结果的正负。这些判定用计算机硬件实现是及其复杂的。另外还有一个方面就是用带符号的二进制表示零会有两种结果,即0000…0和1000…0,因为0可以看成是+0和-0,因此,在计算机中的信息不能够直接用二进制表示。人们需要找出一种更好的编码方法,使得运算起来能够将符号位一起运算还能得到正确的结果,这就引入了计算机之信息的存储形式:补码存储。如何求出一个数字的补码在许多计算机的教科书中都给与了充分的阐述,这里我们主要讲解一下补码的含义。正数的补码还是原来的加上符号的二进制形式(也叫原码)。负数的补码则要通过“模数的概念来理解”。我们知道,对于钟表,12是一个循环,过了12就又从1开始数了。如果我们的手表上指的是8点,而标准时间是6点,我们就可以向后拨两个格,也可以向前拨10个格,都可以达到同样的效果。也就是说对于模数12来说,2和10是互补的,一个数减去2和一个数加上10是一样的,一个数减去10和一个数加上2也是一样的。受此启发,在计算机中,如果A-B,那么我们可以把-B转化成补码,然后可以用A的补码加上B的补码来完成操作。限于篇幅,不再举例。用补码表示计算机信息有很多好处,首先是0的表示唯一了,不存在正零和负零之分;其次是符号位可以正常参与运算,最后仍然能够得到正确的结果,无需单独运算;还有就是用补码进行运算时,减法运算可以转换为加法运算。如果A-B,可以理解为A+(-B),简化了硬件设计的难度。

4、总结与展望

计算机中信息的表示和编码是学习理解计算机工作原理的基础,也是计算机初学者学习计算机的第一道拦路虎,许多计算机毕业生直到本科毕业对于信息的编码表示也是一知半解,影响到了他们对于计算机理论的后续学习。本文通俗地讲解了计算机中数据的表示方法和编码原理,并用例子加以形象说明,初学者深刻理解这些内容对于进一步学习计算机理论知识有着莫大的好处。

作者:曹挚 单位:徐州幼儿师范高等专科学校



推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
author-avatar
卢嘉怡i
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有