计算机是通过什么来传送数据信号的呢?
计算机采用电平信号来传送数据,并且只有两种信号:高电平和低电平(高电平用1表示,低电平用0表示)。

a. 电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V。电压属于简单的一个模拟量,表示的是两点电位之间的电势差,而电平则是逻辑量,有逻辑高、逻辑低等不同的值,电平其实就是电压的不同电位。
b. 因为只有两种信号,精确度就会比较高,不容易因为硬件的故障损耗,产生误差。能保证我发出去的信号,别人接收的时候是准确的。不会因为电路硬件问题导致输出的信号变弱,使得接收者接收了错误的信号。

CPU 和 内存使用IC电子元件作为基本单元,IC电子元件有不同种形状,但是其内部的组成单元称为一个个的引脚(引脚,又叫管脚,英文叫Pin。就是从集成电路(芯片)内部电路引出与外围电路的接线,所有的引脚就构成了这块芯片的接口)。IC的所有引脚,只有高电平和低电平两种信号,IC的这种特性,也就决定了计算机的信息处理只能用 0 和 1 表示,也就是二进制来处理。

综上所述,计算机传输数据信号,逻辑层上是通过传输二进制的0和1数字串,物理层上是连续的高低电平信号。

位和字节

数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

二进制数的位数一般为 8位、16位、32位、64位,也就是 8 的倍数,为什么要跟 8 扯上关系呢? 因为在计算机中,把 8 位二进制数称为一个字节(Byte), 一个字节有 8 位,也就是由 8个bit构成。为什么1个字节等于8位呢?因为 8 位能够涵盖所有的字符编码,这个记住就可以了。

用字节处理数据时,如果数字小于存储数据的字节数 ( 二进制的位数),那么高位就用 0 填补,高位和数学的数字表示是一样的:左侧表示高位,右侧表示低位。比如,这个六位数用二进制数来表示就是 100111,只有6位,高位需要用 0 填充,填充完后是 00100111,占一个字节,如果用 16 位表示 就是 0000 0000 0010 0111占用两个字节。

我们一般口述的 32 位和 64位的计算机,一般就指的是CPU一次能够处理的二进制数据位的最大位数值(也称字长),32 位一次可以表示 4个字节,64位一次可以表示8个字节的二进制数。处理器的字长越大,说明它的运算能力越强。比如我们的笔记本电脑,现在一般都是64位的电脑,这也就是说我们的电脑一次可以处理8个字节。

如果讲处理器的寻址范围(以8位二进制作为一个存储单元,也就是一个字节,通常每个单元存储一个字。每个存储单元有一个地址,是一个整数编码,可以表示为二进制整数),则要看处理器的地址总线的位数,而不是它的字长!目前主流的64位处理器的数据总线为64位,地址总线大部分是32位,这也就是为什么有些人称现在的64位笔记本是伪64位电脑一说的来源。地址总线与寻址范围的关系:存储单元是以字节(byte)为单位,N根地址总线能访问2的N次方地址。

我们一般在软件开发中用十进制数表示的逻辑运算等,也会被计算机转换为二进制数处理。对于二进制数,计算机不会区分他是 图片、音频文件还是数字,这些都是一些数据的结合体。

二进制

二进制数代表的 00100111 转换成十进制就是 39,这个 39 并不是 3 和 9 两个数字连着写,而是 3 * 10 + 9 * 1,这里面的 10 , 1 就是位权,以此类推,上述例子中的位权从高位到低位依次就是 7 6 5 4 3 2 1 0。这个位权也叫做次幂,那么最高位就是2的7次幂,2的6次幂 等等。二进制数的运算每次都会以2为底,这个2 指得就是基数,那么十进制数的基数也就是 10 。在任何情况下位权的值都是 数的位数 - 1,那么第一位的位权就是 1 - 1 = 0, 第二位的位权就睡 2 - 1 = 1,以此类推。那么我们所说的二进制数其实就是 用0和1两个数字来表示的数,它的基数为2,它的数值就是每个数的位数 * 位权再求和得到的结果。

十进制转化成二进制采用"除2取余,逆序排列"法:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

十进制小数转换成二进制小数,和上面说的整数转换有所不同,用“乘基取整法”。下面示例:

和十进制数一样,加减乘除也适用于二进制数,只要注意逢 2 进位即可。二进制数的运算,也是计算机程序所特有的运算,因此了解二进制的运算是必须要掌握的。

① 移位运算
以 39 为例,我们先把十进制的39 转换为二进制的 0010 0111,然后向左移位一个字节,也就变成了 0100 1110,那么再把此二进制数转换为十进制数就是上面的78, 十进制的78 竟然是 十进制39 的2倍关系。我们在让 0010 0111 左移两位,也就是 1001 1100,得出来的值是 156,相当于扩大了四倍!显然,左移相当于是数值扩大的操作。那么右移是缩小 1/2,1/4 倍?

二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位当作符号位。 符号位是 0 时表示正数,是 1 时表示负数。

计算机世界中是没有减法的,计算机在做减法的时候其实就是在做加法,也就是用加法来实现的减法运算。比如 100 - 50 ,其实计算机来看的时候应该是 100 + (-50),为此,在表示负数的时候就要用到二进制补数,补数就是用正数来表示的负数。为了获得补数,我们需要将二进制的各数位的数值全部取反,然后再将结果 + 1 即可。
-1 用二进制数表示:原始数值是1(00000001),取反(11111110),加1(11111111),也即十进制的-1对应二进制为:11111111。下面通过1-1验证下其正确性。

0 虽然既不是正数也不是负数,但是考虑到其符号位,就将其归为了正数。

在了解完补数后,我们重新考虑一下右移这个议题,右移在移位后空出来的最高位有两种情况 0 和 1。当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0,类似于霓虹灯向右平移的效果,这就被称为逻辑右移。将二进制数作为带符号的数值进行右移运算时,移位后需要在最高位填充移位前符号位的值( 0 或 1)。这就被称为算数右移。如果数值使用补数表示的负数值,那么右移后在空出来的最高位补 1,就可以正确的表示 1/2,1/4,1/8等的数值运算。如果是正数,那么直接在空出来的位置补 0 即可。

当然,结果不为 0 的运算同样也可以通过补数求得正确的结果。不过,有一点需要注意,当运算结果为负的时候,计算结果的值也是以补数的形式出现的,比如 3 - 5 这个运算,来看一下解析过程:

综上我们可以得出来一个结论:左移时,无论是图形还是数值,移位后只需要将低位补 0 即可;右移时,需要根据情况判断是逻辑右移还是算数右移。

②逻辑运算
计算机能够处理的运算,大体可分为逻辑运算和算数运算,算数运算指的是加减乘除四则运算;逻辑运算指的是对二进制各个数位的 0 和 1分别进行处理的运算,包括“逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异或(XOR运算)”四种。

针对二进制部分主要转自下面文章:

https://blog.csdn.net/weixin_43314519/article/details/107443049

计算机基础(二)二进制相关推荐

  1. 计算机基础之二进制、十进制、十六进制转换(上)

    计算机基础之二进制.十进制.十六进制转换(上) 计数法与数据转换原理 背景知识:什么是计数法 人类历史上,不同的文明发展都遇到同样的问题,人类记录量时比如中文 二.三.四.五.六--,记录数字所使用的 ...

  2. p2.第一章 Python基础入门 -- 冯诺依曼体系和计算机基础 (二)

    1.2 核心基础 1.2.1 计算机基础知识 艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家.逻辑学家,被称为计算机科学之父,人工 ...

  3. 计算机基础二,四,八,十,32,64进制 转换规律

    计算机基础进制 计算机常用进制: 二进制 八进制 十进制 16进制 计算机操作系统进制: 二进制 为什么采用二进制? (1)技术上容易实现.用双稳态电路表示二进制数字0和1是很容易的事情. 计算机使用 ...

  4. 计算机基础二实验报告,六年制本科文科《大学计算机基础(二)》实验报告册.doc...

    文档介绍: 实验报告册 学生姓名 学号 院.年级专业 指导教师 (六年制本科文科用) 信息科学与工程学院大学计算机基础教研室编制 教务处印制 目录 实验一字段属性的设置与数据表的使用 实验二数据查询 ...

  5. 二进制计算机基础,计算机基础_03 二进制是什么

    朋友们是否还记得2008年电视上播出的42集电视连续剧<魔幻手机>,在片头部分,有一个画面是这样的: 大家从图中可以看到里面有很多的数字从0-9都有,可能当时朋友们觉得这个好酷炫,并没有更 ...

  6. 一点简单计算机基础知识(二进制、字节、常见DOS命令)

      最近回顾Java基础视频,养成做笔记的习惯,以前一些概念知识,不注重,趁回顾,就记录下来. 本文目录 1.二进制 2.字节 3.常用DOS命令 1.二进制   计算机中的数据不同于人们生活中的数据 ...

  7. 计算机基础三: 二进制减法实现

    在上一章中了解了如何实现二进制加法, 加法是始终从两个加数的最右列向左列进位计算的, 而在减法中没有进位, 只有借位. 253 - 176 = 77 上面的式子我们不难算出来, 但习惯性的思维让我们用 ...

  8. 计算机基础之二进制与原反补

    在计算机程序中,数值运算是基于二进制的 我们最常见的进制其实就是我们在生活中用的最多的十进制,除了十进制,还有二进制,八进制,十六进制,所谓进制其实就是计数的一种方式,十进制就是逢十进一,其它进制也是 ...

  9. 计算机基础知识二进制转换,计算机基础知识数制转换

    二.数制转换 1.十进制数到二进制数的转换 (1).整数部分  除2取余法(余数为0为止),最后将所取余数按逆序排列. 实例:将十进制数23转换为二进制数 2|    23 2|  11 余数  1 ...

  10. 计算机基础知识二进制转换,计算机基础二进制转换作业01

    经典,不容错过 一.十进制转换成其他进制 方法:(以转换成二进制数为例,转换成其它进制数同理) 十进制数的整数部分采用"除2取余法",即十进制整数以及此期间产生的商逐次除以基数2, ...

最新文章

  1. iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)
  2. 0x000000f怎么修复 win10_win10无法启动也能进安全模式?用这个方法就OK
  3. 使用jsp+swfupload做上传时报Upload Error: 405错误
  4. 使用Asible批量部署yum仓库
  5. ubuntu默认防火墙
  6. 南邮java实验报告,南邮微机原理实验报告精选.doc
  7. Linux C 算法——查找
  8. 变压器的同名端,以及判别方法
  9. SAP License:SAP ECC6安装系列四:安装过程详解
  10. AO3414相关技术资料
  11. idea建springcloud项目_idea创建springcloud项目图文教程(EurekaServer注册中心)
  12. gpio stm8 管脚 配置工具_STM8S 外设模块的GPIO引脚应该如何配置
  13. Android开机动画总结
  14. java 规范 阿里巴巴_阿里巴巴 Java 代码规范
  15. C++程序员的职业生涯规划
  16. java 扫描tcp端口号_Java 端口扫描器 TCP的实现方法
  17. 2022起重机械指挥考试题模拟考试题库及在线模拟考试
  18. [Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
  19. 免费的图书管图书借阅管理系统
  20. 【日常】FIFA世界杯和历史事件

热门文章

  1. 蓝桥杯C++:BASIC30 阶层计算
  2. vue打印文件使用 v-print 并且实现一个页面多个打印
  3. 用友t3服务器系统管理显示类型不匹配,存货核算进入时提示“类型不匹配”
  4. 一文读懂LWD随钻测井技术
  5. 男女主都是计算机程序,5本男女主互相利用的古言:他们相互算计,却在不知不觉中真的动了心!...
  6. 我体验过VR,还行吧
  7. C#串口扫描枪的简单实现
  8. RS232的硬件流控:DCD DSR DTR RTS CTS
  9. RK3399Pro 入门教程(一)ubuntu18.04系统安装
  10. Dictionary介绍