0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机基础知识之二进制

jf_78858299 来源:前端柒八九 作者:前端柒八九 2023-03-31 16:06 次阅读

C/Java/JavaScript等高级语言编写的程序中, 「数值」「字符串」「图像」 在计算机内部都是以 「二进制数值」 的形式来表现的

用二进制数表示计算机信息的原因

计算机内部是由IC这种电子部件构成的。IC的所有 「引脚」 ,只有 「直流电压」 0V5V两个状态。

❝也就是说,IC的一个引脚,「只能表示两个状态」

IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。由于1位(一个引脚)只能表示两个状态,所以二进制的计数方式就变成了011011100...这种形式。

❝计算机处理信息的 「最小单位」 -- 「位」 ,就相当于二进制中的一位。

图片

IC的一个引脚表示二进制的1位

二进制的位数一般是8位、16位、32位···· 「也就是8的倍数」 ,这是因为计算机所处理的信息的 「基本单位」 是8位二进制数。8位二进制数被称为一个 「字节」

❝字节是最基本的**「信息计量单位」**

  • 「位」 是最小单位
  • 「字节」 是基本单位

❝内存和磁盘都使用 「字节单位」 来存储和读写数据,使用 「位单位」 则无法读写数据。

用字节单位处理数据时,如果数字小于存储数据的字节数(=二进制数的位数),那么高位上就 「用0填补」 。例如,100111这个6位二进制数,用8位(=1字节)表示时为00100111

在程序中,即使是用 「十进制」「文字」 等记录信息,在 「编译」 后也会转换成二进制的值。

图片

对于用二进制数表示的信息,计算机不会区分它是数值、文字,还是某种图片的模式,而是 「根据编写程序的各位对计算机发出的指示进行信息的处理」

例如,00100111这样的二进制数,即可以将其当做 「数值」 做加法运算,也可以当成(单引号)文字而显示在显示器上。

❝具体进行何种处理,取决于**「程序的编写方式」**


什么是二进制

二进制数的值换成十进制数的值,只需将二进制的各 「数位」 的值和 「位权」 相乘,然后将相乘的结果相加即可。

图片

位权

十进制数39的各个 「数位」 的数值,并不只是简单的39

  • 3表示的是3×10=30
  • 9表示的是9×1=9

这里的各个 「数位」 的数值相乘的101就是 「位权」 。数字的位数不同,位权也不一样。

  • 第一位(最右边的一位)是10的0次幂(=1)
  • 第二位是10的1次幂(=10)
  • 第三位是10的2次幂(=100)
  • 以此类推

「位权」 的思考方式同样适用于二进制

  • 第一位是2的0次幂(=1)
  • 第二位是2的1次幂(=2)
  • 第三位是2的2次幂(=4)
  • 以此类推

〇〇的xx次幂」 表示位权,

  • 其中,十进制数的情况下〇〇部分是10,二进制数的情况下则为2〇〇被称为**「基数」**
  • xx,在任何进制数中都是**「数的位数-1」**
    • 即第一位是1-1=0次幂
    • 第二位是2-1=1次幂
    • 第三位是3-1=2次幂

❝数值,表示的就是构成数值的各 「数位」 的数值和 「位权」 相乘后相加的结果

二进制数00100111用十进制数表示的话是39,因为(0×128)+(0×64)+(1×32)+(0×16)+(0×8)+(1×4)+(1×2)+(1×1)= 39


移位运算和乘除运算的关系

和十进制数一样, 「四则运算」 同样也可以使用在二进制数中,只要注意 「逢二进位」 即可。

移位运算

「移位运算」 指的是将二进制数值的各数位进行 「左右移位」 的运算。

移位有 「左移」向高位方向)和 「右移」向低位方向)两种。

假设存在如下处理。把变量a中保存的十进制数值39左移两位后再将运算结果存储到变量b中。

a = 39;
b = a<<2;

<<这个运算符表示 「左移」「右移」 时用>>运算符。<<运算符和>>运算符的 「左侧」「被移位的值」「右侧」 表示要移位的 「位数」

在前面我们介绍过,无论程序中使用的是几进制,计算机内部都会将其准换成二进制数来处理,因此都能进行 「移位操作」

❝针对 「左移运算」 ,空出来的低位要进行 「补0操作」

而右移操作,由于情况特殊,我们后面再做详细介绍。

此外,移位操作使最高位或最低位 「溢出」 的数字,直接丢弃就可以了。

下图,就是上述代码的运行过程。图片

「移位运算」 就好比使用二进制表示的 「图片模式」 像霓虹灯一样 「左右流动」 的样子


补数

二进制数中表示 「负数」 值时,一般会把 「最高位作为符号来使用」 ,因此我们把这个最高位称为**「符号位」**

  • 符号位是0时表示正数
  • 符号位是1时表示负数

计算机在做减法运算时,实际上内部是在 「加法运算」 。在表示负数时就需要使用 「二进制的补数」

❝补数就是**「用正数来表示负数」**

为了能获取补数,需要**「将二进制数的各位的数值全部取反,然后再将结果加1」**

例如,用8位二进制数表示-1时,只需要求得1,也就是00000001的补数即可。

  • 将各数位的0取反加1,1取反成0
  • 再将取反的结果加1
  • 最后转化成11111111

图例如下:图片

1-1在计算机内部是如何实现的

1-1,也就是1+(-1),一眼就能知道答案,结果是0。

通过上文我们得知,-1用二进制表示为11111111。那么,在计算机内部计算1-1,就变成了。

00000001 + 11111111

结果确实为0(=00000000)。这个运算过程中出现了 「最高位溢出」 的情况, 「对于溢出的位,计算机会直接忽略掉」

即在8位的范围内进行计算时候,100000000这个9位二进制数就会被认为是00000000这一8位二进制数。

图片

❝补数求解的变换方法就是**「取反加1」**

将二进制数的值取反加1的结果,和原来的值相加,结果为0


逻辑右移和算术右移的区别

右移有移位后在最高位补0和补1两种情况。当二进制数的值表示 「图形模式」 而非数值时候,移位后需要在最高位补0。这就称为 「逻辑右移」

图片

将二进制数作为 「带符号的数值」 进行运算时,移位后要在最高位填充 「移位前」 符号位的值(01)。这就称为 「算术右移」

  • 如果数值是用补数表示的负数值,那么右移后再空出来的最高位补1
  • 如果是正数,只需要在最高位补0即可

❝只有在 「右移」 时才必须区分 「逻辑位移」 和**「算术位移」**

图片

❝左移时,无论是 「图形模式」逻辑左移)还是 「相乘运算」算术左移),都只需要在空出来的 「低位补0」 即可。

符号扩充

以8位二进制数为例, 「符号扩充」 就是指在保存值不变的前提下将其准换成16位和32位的二进制。

图片不管是正数还是用补数表示的负数,都只需要 「用符号位的值(0或1)填充高位」 即可。


逻辑运算

在运算中,与逻辑相对的术语是算术。

  • 将二进制数表示的信息作为 「四则运算」 的数值来处理就是**「算术」**
  • 像图形模式,将数值处理为单纯的01的罗列就是**「逻辑」**

计算机能处理的运算,大体可分为 「算术运算」「逻辑运算」

  • 「算术运算」 是指加减乘除四则运算
  • 「逻辑运算」 是指对二进制数 「各数字位的01分别进行处理」 的运算
    • 逻辑 「非」NOT运算)
    • 逻辑 「与」 (AND运算)
    • 逻辑 「或」OR运行)
    • 逻辑 「异或」XOR运算)

「逻辑非」 是指的是0变成11变成0的取反操作。图片

「逻辑与」 指的是”两个都是1“时,运算结果为1,其他情况下运算结果都为0的运算。

图片

逻辑与的真值表

「逻辑或」 指的是”至少有一方是1“时,运算结果为1,其他情况下运算结果都是0的运算

图片

逻辑或的真值表

「逻辑异或」 指的是排斥相同数值的运算。“两个数值不同”,也就是说,当“其中一方是1,另一方是0“时运算结果是1,其他情况下结果都是0.

图片

逻辑异或的真值表

❝在进行逻辑运算时,都是对相对应的 「各数位」 分别进行运算

「大家不要把二进制数表示的值当作数值,而应该把它看作是图形或者开关上的ON/OFF」 。并且, 「逻辑运算」 的运算对象不是数值,因此不会出现进位的情况。

下图表示的是对NI的两个字母的图形模式进行各种 「逻辑运算」 后的结果。假设白色部分表示1,黑色部分表示0.图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    795

    浏览量

    41643
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87849
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104701
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20506
  • javascript
    +关注

    关注

    0

    文章

    516

    浏览量

    53850
收藏 人收藏

    评论

    相关推荐

    计算机为什么使用二进制来表达

    在生活中,人们已经习惯用十进制来计数,0~9的发明是人类的伟大进步,从此就可以用0~9这十个数字的组合能表示任何大小的数字。于是初学计算机的人往往会问的问题是,计算机为什么使用二进制
    的头像 发表于 10-30 15:44 3377次阅读
    <b class='flag-5'>计算机</b>为什么使用<b class='flag-5'>二进制</b>来表达

    计算机硬件怎样执行二进制程序的

    计算机怎样将二进制数当成指令执行的?
    发表于 12-11 08:54

    为什么计算机内部进行二进制运算,而不是十进制运算?

    闲来没事在b站上看李永乐老师讲的这个视频,觉得挺有意思的。这篇文章主要是记一下笔记。本篇文章里面的数字若没有特殊指明,默认为二进制数字。你们有没有这样的疑问:为什么计算机内部进行二进制运算,而不是
    发表于 07-23 09:59

    二进制数的运算及加法电路

    前言上篇 计算机组成原理第1章 计算机基础知识1.1 数制1.2 逻辑代数(布尔代数)1.3 逻辑电路1.4 二进制数的运算及加法电路第2章 微型
    发表于 09-10 07:34

    二进制编码和二进制数据

    二进制编码和二进制数据   二进制编码是计算机内使用最多的码制,它只使用两个基本符号"0"和"1",并且通过由这两个符号组成的
    发表于 10-13 16:22 4781次阅读

    C#教程之二进制存取图片

    C#教程之二进制存取图片,很好的C#资料,快来学习吧。
    发表于 04-20 15:27 9次下载

    二进制如何转换为十进制?

    二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。
    的头像 发表于 06-22 10:21 2.4w次阅读

    计算机二进制概念和进制运算的详细资料简介

    本文档的主要内容详细介绍的是计算机二进制概念和进制运算的详细资料简介。
    发表于 12-11 17:34 19次下载
    <b class='flag-5'>计算机</b>的<b class='flag-5'>二进制</b>概念和<b class='flag-5'>进制</b>运算的详细资料简介

    计算机在硬件层面究竟是怎么表示二进制 1

    本篇文章来看看计算机在硬件层面究竟是怎么表示二进制的,CPU究竟是怎么实现的?通过本文的学习,我们也可以反过来明白为什么计算机会采用二进制了。
    的头像 发表于 02-01 15:28 1155次阅读
    <b class='flag-5'>计算机</b>在硬件层面究竟是怎么表示<b class='flag-5'>二进制</b> 1

    计算机在硬件层面究竟是怎么表示二进制 2

    本篇文章来看看计算机在硬件层面究竟是怎么表示二进制的,CPU究竟是怎么实现的?通过本文的学习,我们也可以反过来明白为什么计算机会采用二进制了。
    的头像 发表于 02-01 15:28 949次阅读
    <b class='flag-5'>计算机</b>在硬件层面究竟是怎么表示<b class='flag-5'>二进制</b> 2

    二进制数据及取值范围的计算方法

    本文介绍二进制数据的相关知识,如定义、取值范围计算、转换为十进制的方法以及一些常见位数的二进制数据的取值范围等。
    的头像 发表于 11-08 15:48 2170次阅读
    <b class='flag-5'>二进制</b>数据及取值范围的<b class='flag-5'>计算</b>方法

    10进制转换为二进制的算法

    10进制转换为二进制计算机领域中非常重要的一个问题。在计算机中,所有的数据都是以二进制形式进行存储和处理的。因此,我们常常需要将10
    的头像 发表于 01-11 09:14 2346次阅读

    10进制转换为二进制的算法

    进制转换为二进制计算机科学中非常基础且重要的概念之一。在理解和应用计算机科学的基础知识时,掌握这个算法是至关重要的。 在开始讲解十
    的头像 发表于 01-15 10:32 3251次阅读

    二进制、八进制、十六进制在现实当中有什么意义?

    二进制、八进制、十六进制在现实当中有什么意义? 二进制、八进制和十六进制在现实生活中有着广泛的应
    的头像 发表于 01-16 11:14 5350次阅读

    计算机采用二进制的原因不包括什么

    计算机采用二进制的原因主要是基于其物理实现的简便性、逻辑运算的简化、以及电子元件的稳定性。然而,这个问题要求我们探讨计算机采用二进制的原因不包括什么,这实际上是一个反向思考的问题。在回
    的头像 发表于 09-04 17:03 528次阅读