《Code:The Hidden Language Of Computer Hardware and Software》 ——笔记

怎么由逻辑电路实现二进制的加法

  首先二进制的加法可以拆解为两个步骤:加与进位。

+加法01
001
110
+进位01
000
101

 

 

 

 

 

 

  加这一步骤可以由异或门来完成,进位这一步骤则可以用与门来完成。

  但是由这两个逻辑门只能组成一个半加器,输入2个值,输出加和位与进位。这是不够的,除了最低位的加法不需要进位配合,其他位上的加法都要进位、加位与被加一起输入。

  所以需要能有3个输入2个输出的全加器。这可以由两个半加器组成。

 

减法的实现

  我们可以用加法器来实现减法,首先来一次简单的数学推导。

    253 - 176

  => 253 -176 + 1000 - 1000

  => 253 - 176 + 999 + 1 - 1000

  => 253 + (999-176) +1 - 1000

  (999 - 176)  可以称作176对9的补码,这样如果我们忽略-1000(确实可以忽略,因为假如我们这的输出位只有3位那么第四位上的1是不被输出的),那么用三的加法就可以完成一个减法运算。

  (999-176) +1 则可以称作是对10的补数。

  这是十进制下的推导,同样在二进制下一样成立。、

  所以对一个数的减法可以加上这个数的补码(二进制就是对2求补,十进制就是对10求补)即可。

 

如何实现储存

  有种电路有两种稳态,可记录二进位制数字信号“1”和“0,这就是触发器。

  基本RS触发器又称SR锁存器,是触发器中最简单的一种,也是各种其他类型触发器的基本组成部分。两个与非门或或非门的输入端输出端进行交叉耦合或首尾相接,即可构成一个基本RS触发器。

  RS触发器

如何实现寻址

  要实现一个最基本的储存器,光光只有储存功能还不够,还要能有选择的储存与读取功能也就是要有寻址能力。

  假如我们有32位二进制来寻址,那么我们能选择232个单位的数据,如果一个单位的数据是一字节,那么32位寻址端的最多能储存大约是4GB的数据。这也是为什么随着电脑的内存越来越大,我们要换成64位的CPU与系统。因为超过4GB的储存,32位是无法寻址到的。

 

为什么是字节与十六位进制

  在早期的加法器中的位宽就是8位,现在用字节表示一组8比特数据。

  一字节由于有8位,其取值范围为00000000到11111111,也可以表示0~255之间的正整数,通过补码也能表示-128~127范围内的正、负整数。虽然一个8位的二进制10110110自然并直观,但不够简洁。这是我们就可以使用十六位进制来表达。一个十六位进制的数能表达4位二进制即半字节。所以一个字节只需要2个十六位进制就行,10110110就可以拆分成1011与0110,即b6h(h表明这是一个十六位进制的数)表达。

 

怎么实现自动操作

  首先我们要有一个振荡器,它能在不需要人工干涉的情况下自动输出0与1。其经常被称为时钟,因为通过震荡可以进行计时。一个循环(cycle)就是振荡器从某个初始状态经过一段时间又回到先前的初始状态的这一段时间,又称为一个周期。周期的倒数就是这个震荡器的频率(frequency),例如20Hz就是指振荡器每秒产生20次循环。

  我们能利用振荡器实现一个计数器,能循环计数。例如一个16位的计数器能累积000h~ffffh。

  储存在RAM中的代码分为2种:一种是指令,让电路执行何种操作,其往往包含要操作数据的地址。另一种是数据,要被执行的代码。

  计数器是种能连续累加的电路,但RAM中储存的代码往往不是连续的,那么我们需要一种方法能重新选择开始执行代码的位置的指令,即jump,通过重置计数器便可以实现。

  

什么是总线

  总线(Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑。从另一个角度来看,如果说主板(Mother Board)是一座城市,那么总线就像是城市里的公共汽车(bus),能按照固定行车路线,传输来回不停运作的比特(bit)。这些线路在同一时间内都仅能负责传输一个比特。因此,必须同时采用多条线路才能发送更多数据,而总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率 x 宽度(Bytes/sec)。

  PC上一般有五种总线:

  • 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
  • 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
  • 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为USB Bus和1394 Bus。
  • 扩展总线(Expansion Bus):可连接扩展槽和电脑。
  • 局部总线(Local Bus):取代更高速数据传输的扩展总线。

 定点数与浮点数

   首先我们来介绍下BCD码(Binary-Coded Decimal),是一种二进制的数字编码形式,用二进制编码的十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。由于2的补数不于BCD码一起使用,所以BCD码需要增加一位来表示负数。

  例如-4,325,120.25可以表示为如下5个字节:

  00010100 00110010 01010001 00100000 00100101

  14h          32h          51h          20h          25h

  在上面的例子中,小数点位置在2位小数之前。关于小数点位置的信息并没有储存在数字中,它的位置是固定的。

  基于这个二进制的储存和标记方式就是定点格式(fixed-point format)。

  顾名思义,浮点数就是其小数点的位置不确定。其二进制的储存方法如下:

  

  sign是符号位,exponent是指数位(单精度8位,双精度11位),fraction是有效位(单精度23位,双精度52位)。

  这是不是很像我们平时用到的科学计数法。

  但这种方法会带来一个问题,就是在有效位超过一定时会有精度问题。

console.log(9007199254740992 === 9007199254740993); //true
console.log(9007199254740992 === 9007199254740994); //false

   是的,这相等。

   因为 前两者都会被储存为 1.000...(52个零)×253 

   9007199254740994  则会被保存为1.000...0001×253 。

   其影响精度的因素是有效位数,在双精度的条件下有效位是53位(包含了符号位),由于210~103,所以双精度下能保证15位的十进制有效数,单精度则是7位。

转载于:https://www.cnblogs.com/chenrj23/p/4456454.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于一个域名下如何更换网站

说明:建立在有域名、服务器、两个网站的基础之上。 背景: 原来的网站采用的是微企点建站的方式,对于那种拖拉拽不懂编程的人用的,现在自己开发一个更为强大的功能性网站,想把这个新网站替换掉原来的网站,…

搭建xss-platform平台

这篇更详细,对蓝莲花的XSS有更详细的说明 https://blog.csdn.net/weixin_50464560/article/details/115360092 https://bbs.secgeeker.net/thread-1519-1-1.html 搭建xss-platform平台 一直想搭在公网搭建自己的XSS平台用来验证XSS漏洞,使用别人的平台…

如何获取电脑网站(手机网站)支付宝支付的配置信息(appid、商户私钥、支付宝公钥)

需求:想在网站接入支付宝支付。现在的网站基本分为PC端和手机端。 明确工作目标:appid、商户私钥、支付宝公钥以及回调地址。 电脑PC端支付宝支付获取配置信息步骤如下: 1.登录支付宝开放平台 (传送门),使用企业认证的支付宝账户或者个人认证的支付宝账号扫码登录。…

ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库

在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来,留着以后用。先安装MySQL 代码: sudo apt-get install mysql在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来,留着以后用。先安装MySQL代码:sudo…

HTML5新增的主体结构元素

article元素section元素nav元素aside元素time元素与微格式pubdate属性 1.article元素 代码片段: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>HTML学习计划</title> </head> …

在Eclipse中使用JUnit4进行单元测试(图文教程一)

在Eclipse中使用JUnit4进行单元测试 单元测试&#xff0c;JUnit4。 这两个有什么关系呢&#xff1f;这就好比&#xff08;草&#xff09;单元测试和&#xff08;割草机&#xff09;。用这个JUnit4工具去辅助我们进行测试。其实不理解这个也没关系&#xff0c;听多了见多了用多了…

Java 9和Project Jigsaw如何破坏您的代码

Java 9迫在眉睫&#xff0c;它将带有完整的Project Jigsaw 。 在我从OpenJFX邮件列表的最近讨论中得知它可能会破坏现有代码之前&#xff0c;我并没有对此给予太多关注。 这对于Java非常不寻常&#xff0c;因此引起了我的兴趣。 我阅读了该项目的JEP和一些相关文章&#xff0c…

mysql 表结构 增删改查_mysql学习【第3篇】:数据库之增删改查操作

注意的几点&#xff1a;1.如果你在cmd中书命令的时候&#xff0c;输入错了就用\c跳出2.\s查看配置信息一、操作文件夹(库)增&#xff1a;create database db1 charset utf8;删&#xff1a;drop database db1;改&#xff1a;alter database db1 charset gbk;查&#xff1a;show …

HTML5的非主体结构元素(header、footer、hgroup、assress)

header元素footer元素hgroup元素address元素网页编排规则 1.header元素 代码演示: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>header元素</title> </head> <body> &l…

DVWA通关教程(上)

简介&#xff1a; DVWA是一款基于PHP和mysql开发的web靶场练习平台&#xff0c;集成了常见的web漏洞如sql注入,xss&#xff0c;密码破解等常见漏洞。本教程将以DVWA为例&#xff0c;演示常见的web漏洞的利用和攻击。 登录创建数据库&#xff08;账号为admin&#xff0c;密码为…

HTML5表单新增元素与属性(form、formaction、formmethod、formenctype、formtarget、autofous、required、labels)

表单内元素的form属性表单内元素的formaction属性​​​​​​​表单内元素的formmethod属性​​​​​​​表单内元素的formenctype属性​​​​​​​表单内元素的formtarget属性​​​​​​​表单内元素的autofous属性​​​​​​​表单内元素的required属性​​​​​​​…

2048

最近用WPF写了款2048的小游戏&#xff0c;最早接触这款游戏是在手游上&#xff0c;觉得蛮好的&#xff0c;于是就用WPF实现了下&#xff0c;界面运行流畅&#xff0c;操作便捷&#xff0c;虽说程序在可玩度上还稍有欠缺&#xff0c;不过这也是WPF在游戏开发中的一个新篇章 程序…

表单新增元素与属性(control、placehoulder、list、AutoComplete、pattern、SelectionDirection、indeterminate属性)

标签的control属性文本框的placehoulder属性文本框的list属性文本框的AutoComplete属性文本框的pattern属性文本框的SelectionDirection属性复选框的indeterminate属性image提交按钮的height属性与width属性1.标签的control属性 代码演示: <!DOCTYPE html> <html la…

jboss7.0.2_JBoss AS 7.0.2“ Arc”发布–使用绑定选项

jboss7.0.2有关JBoss AS7方面的更多好消息。 JBoss AS 7.0.2.Final“ Arc”已经发布&#xff01; 自AS 7.0.1发布以来已经过去了一个月。 在这短时间内&#xff0c;修复了许多错误&#xff0c;并实现了更多功能和改进。 所有这些错误修复和功能已包含在此7.0.2版本中。 此新版…

DVWA通关教程(中)

不安全的验证码&#xff08;Insecure CAPTCHA&#xff09; Insecure CAPTCHA(不安全的验证码)主要是绕过验证码的安全验证&#xff0c;一般都有逻辑漏洞。 难度&#xff08;low&#xff09; 审计代码 <?phpif( isset( $_POST[ Change ] ) && ( $_POST[ step ] 1 …

UVa 208 Firetruck【回溯】

题意&#xff1a;给出一个n个节点的无向图&#xff0c;以及某个节点k&#xff0c;按照字典序从小到大输出从节点1到节点k的所有路径 看的题解 http://blog.csdn.net/hcbbt/article/details/9755147 因为节点数很少&#xff08;小于20&#xff09;&#xff0c;所以可以先用floyd…

html中使用静态图片做一个csdn网站的首页

简单使用csdn网站的截图做一个网站的DEMO, 简单把CSDN网站分为四个图片(自己截图),分别为上,左,中,右,使用IDEA创建一个静态Web项目。 代码演示:(不添加样式,简单演示效果) <!DOCTYPE html> <html lang="en"> <head><meta chars…

使用docker-compose的Spring会话演示

我之前已经写过一个令人振奋的新项目&#xff0c;称为Spring-session &#xff0c;它为基于Java的Web应用程序提供了一种外部化用户会话的干净方法。 我设法使用docker-compose为spring-session进行了良好的演示设置&#xff0c;这展示了该项目的优势&#xff0c;我想在这里写…

kail利用msf工具对ms11-003漏洞入侵渗透Win7

前言&#xff1a; windows7IE溢出攻击 实验环境&#xff1a; 工具&#xff1a;metasploit 靶机两台&#xff1a;windows 7和kali2020 攻击机IP地址&#xff1a;10.20.29.129 被攻击机IP地址&#xff1a;10.20.29.134 步骤&#xff1a; 1、在kali里面打开metasploit漏洞…

python中升级pip报错_linux系统下pip升级报错的解决方法

Pip 安装1、在python中提供了一个get-pip.py;下面是地址https://bootstrap.pypa.io/get-pip.py2、在Linux下执行curl https://bootstrap.pypa.io/get-pip.py | python进行下载安装这样很方便了 想装什么包就装什么包Pip install xxx注意&#xff1a;升级完python版本注意&…