首页 > 其他分享 >什么是二进制数 为什么用二进制数表示计算机信息?

什么是二进制数 为什么用二进制数表示计算机信息?

时间:2023-06-21 13:04:15浏览次数:28  
标签:为什么 10 二进制 位是 数值 计算机信息 IC 十进制


想必大家都知道计算机内部是由 IC ①这种电子部件构成的。CPU(微处理器)和内存也是IC的一种。IC有几种不同的形状,有的像一条黑色蜈蚣,在其两侧有数个乃至数百个引脚;有的则像插花用的针盘,引脚在IC内部并排排列着。IC的所有引脚,只有直流电压0V或5V②两个状态。也就是说,IC的一个引脚,只能表示两个状态。


① IC是集成电路(Integrated Circuit)的简称,有模拟IC和数字IC两种。本章介绍的是数字IC。关于内存IC,我们会在第4章详细说明。② 大部分IC的电源电压都是+5V。不过,为了控制电量的消耗,有的IC也会使用+5V以下的电压。如果IC使用的电源电压为+5V,那么引脚状态就不只是0V和+5V,还存在不接收电流信号的高阻抗(high impedance)状态。但在本书中,我们暂时不考虑高阻抗状态。


IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。由于1位(一个引脚)只能表示两个状态,所以二进制的计数方式就变成了0、1、10、11、100…这种形式。虽然二进制数并不是专门为IC而设计的,但是和IC的特性非常吻合(图2-1)。计算机处理信息的最小单位—— 位 ,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。


什么是二进制数 为什么用二进制数表示计算机信息?_十进制数

二进制数的位数一般是8位、16位、32位……也就是8的倍数,这是因为计算机所处理的信息的基本单位是8位二进制数。8位二进制数被称为一个 字节 ①。字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是信息的基本单位。


① 字节是由bite(咬)一词而衍生出来的词语。8位(8 bit)二进制数,就类似于“咬下的一口”,因此被视为信息的基本单位。


用字节单位处理数据时,如果数字小于存储数据的字节数(= 二进制数的位数),那么高位上就用0填补。例如,100111这个6位二进制数,用8位(= 1字节)表示时为00100111,用16位(= 2字节)表示时为0000000000100111。奔腾等32位微处理器,具有32个引脚以用于信息的输入和输出。也就是说,奔腾一次可以处理32位(32位= 4字节)的二进制数信息。

程序中,即使是用十进制数和文字等记述信息,在编译后也会转换成二进制数的值,所以,程序运行时计算机内部处理的也是用二进制数表示的信息(图2-2)。


什么是二进制数 为什么用二进制数表示计算机信息?_cpu_02

对于用二进制数表示的信息,计算机不会区分它是数值、文字,还是某种图片的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理(运算)。例如00100111这样的二进制数,既可以视为纯粹的数值作加法运算,也可以视为“‘”(单引号,single quotation)文字而显示在显示器上,或者视为■■□■■□□□这一图形模式印刷出来。具体进行何种处理,取决于程序的编写方式。

什么是二进制数?为了更清晰地说明二进制数的机制,首先让我们把00100111这个二进制数值转换成十进制数值来看一下。二进制数的值转换成十进制数的值,只需将二进制数的各数位的值和位权相乘,然后将相乘的结果相加即可(图2-3)。

假使有人问你:“为什么使用这样的转换方法呢?你能解释一下吗?”你这么回答是不行的:“不知道原因,只是把方法背下来了。”我们了解了二进制数的机制后,再看二进制数转换成十进制数的方法,就没有死记硬背的必要了。下面我们会对照着十进制数来说明二进制数的机制,这部分是重点,请大家一定要掌握。


什么是二进制数 为什么用二进制数表示计算机信息?_二进制_03

首先,让我们从位权的含义说起。例如,十进制数39的各个数位的数值,并不只是简单的3和9,这点大家应该都知道。3表示的是3×10 = 30,9表示的是9×1 = 9。这里和各个数位的数值相乘的10和1,就是 位权。数字的位数不同,位权也不同。第1位(最右边的一位)是10的0次幂①(= 1),第2位是10的1次幂(= 10),第3位是10的2次幂(= 100),依此类推。这部分相信大家都能够理解。那么,我们就继续讲一下二进制数。

位权的思考方式也同样适用于二进制数。即第1位是2的0次幂(= 1),第2位是2的1次幂(= 2),第3位是2的2次幂(= 4),……,第8位是2的7次幂(= 128)。“○○的××次幂”表示位权,其中,十进制数的情况下○○部分为10,二进制数的情况下则为2。这个称为 基数 ②。十进制数是以10为基数的计数方法,二进制数则是以2为基数的计数方法。“○○的××次幂”中的××,在任何进制数中都是“数的位数-1”。即第1位是1- 1 = 0次幂,第2位是2- 1 = 1次幂,第3位是3- 1 = 2次幂。


① 所有数的0次幂都是1。② 数值的表现方法,进位计数制中各数位上可能有的数值的个数。十进制数的基数是10,二进制数的基数是2。


接下来,让我们来解释一下各数位的数值和位权相乘后“相加”这个处理的原因。其实大家所说的数值,表示的就是构成数值的各数位的数值和位权相乘后再相加的结果。例如39这个十进制数,表示的就是30+9,即各数位的数值和位权相乘后再相加的数值。

这种思考方式在二进制数中也是通用的。二进制数00100111用十进制数表示的话是39,因为(0×128)+(0×64)+(1×32)+(0×16)+(0×8)+(1×4)+(1×2)+(1×1) = 39。大家明白了吗?


什么是二进制数 为什么用二进制数表示计算机信息?_cpu_04

本文摘自《程序是怎样跑起来的》

标签:为什么,10,二进制,位是,数值,计算机信息,IC,十进制
From: https://blog.51cto.com/u_15767091/6528195

相关文章

  • CLICKHOUSE 为什么能估值$2亿与心理学
    就是最近,似乎想明白了有些people的心里世界是多么的有interesting,平日里那种我过得好不好,与我无关,而与别人过得没我好有关,别人过得不好,显得我过得没有那么糟糕的心里,最终决定自己感受过得好不好,是一种病态的心里。我们一生中,那么多有意思的事情,为什么就要去和别人比,感受美好的细胞......
  • 为什么《七周七语言》选中的是这几种语言?
    从众多语言中,挑出本书包含的几门语言,这一过程也许不像你想得那么复杂。我们只不过发了些调查问卷,向本书的潜在读者请教了一番。调查数据汇总上来时,有八门语言入选希望最大。不过,我先是把JavaScript“踢”了出去,因为它实在是过于热门了,取而代之的是原型语言中热门程度仅次于JavaScri......
  • 为什么我们需要一门新语言——Go语言
    编程语言已经非常多,偏性能敏感的编译型语言有C、C++、Java、C#、Delphi和Objective-C等,偏快速业务开发的动态解析型语言有PHP、Python、Perl、Ruby、JavaScript和Lua等,面向特定领域的语言有Erlang、R和MATLAB等,那么我们为什么需要Go这样一门新语言呢?在2000年前的单机时代,C语......
  • 到底什么是Java AIO?为什么Netty会移除AOI?一文搞懂AIO的本质!
    本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和大量排版优化。1、引言关于Java网络编程中的同步IO和异步IO的区别及原理的文章非常的多,具体来说主要还是在讨论JavaBIO和JavaNIO这两者,而关于JavaAIO的文章就少之又少了(即使用也只是介绍了一下概念和代码示例)。在深......
  • 专家访谈:为什么我们需要Erlang
    专家访谈:为什么我们需要Erlang——专家畅谈Erlang与并行计算和云计算如今的计算环境正面临着两大变革:CPU的多核化和云计算。行业内人士预测,未来10年内,普通用户使用的计算机的CPU将达到32核。云计算无疑是2008年IT领域内最热门的话题,Amazon、Google、Microsoft、IBM、Sun等巨头均在......
  • 为什么很多人说不建议学JAVA,说很难找到工作?
    个人感觉这个观点有点片面。虽然国内的IT市场已经变得越来越竞争激烈,但Java作为一种应用广泛的编程语言仍然非常受欢迎。Java可以应用于Web开发、移动开发、大数据处理等多个领域,具有广泛的用途和良好的生态圈。因此,在Java领域拥有一定技能的人才仍然有很多岗位可以选择。如果......
  • 企业去O面临的6大难点及应对策略分析,告诉您为什么这么难?
    企业去O面临的6大难点及应对策略分析,告诉您为什么这么难?字数5476阅读5221评论1赞8去O的话题,可谓由来已久。从十年前阿里提出了这一口号,并率先在公司内部实现了数据库的整体去O开始,到后面从互联网公司到传统企业也纷纷跟进,可以说去O的理念已逐步深入人心。但到直到现......
  • 将 SAP ABAP 数据库表里存储的文件二进制内容下载成为本地文件试读版
    在SAP标准产品和实际项目开发中,经常遇到一些需要将尺寸不大的文件(比如小于1MB的配置文件)的二进制内容,存储到ABAP数据库的情况。比如笔者的SAPOData开发教程里这篇文章,下图代码第17行,使用ABAPOPENSQL将变量ls_file_db的值,插入到数据库表zfile里:下图是数据库......
  • python基础 | python中为什么没有自增运算符?
    学过Java或者C语言的同学在使用python时发现之前很方便的自增运算在python中无法使用,要想弄清楚这个问题,首先需要明白什么是自增运算符?自增运算符:自增运算符的作用是在运算结束前将变量的值加1。自增运算符一般存在于C/C++/C#/Java等高级语言中。自增运算是在该数字原来的内存地......
  • Mongodb 缓存页结构, 为什么我那么快 (1)
    MONGODB数据库写入和并发的速度,绝非是传统数据库可以比拟的,但到底为什么插入的速度这么快,和他的数据库引擎wiredTiger有关,那么就看看MONGODBwiredTiger的设计。MONGODB的数据库引擎WiredTiger, 使用PAGE页的方式,来存储数据,但是磁盘和内存的页面的结构是不一致的,内存的页面......