计算机的组成,位与字节

不仅是记录我的半吊子基础知识,也是一次再学习,不敢保证都对

前言

  越学习越是发现基础知识相当重要,编程语言框架什么的,仅仅会用,真不算什么。还是要更深入的学习。网上有人说不要重复的造轮子,但是我倒是觉得造轮子确实是个很好的学习方式,尤其是像我这样不聪明的同学,只能通过笨办法来学习,一点一点的学习。
  基础知识,我也不知道从哪开始说起,所以我在复习过程中,想到什么就写什么好了。

计算机的组成

  既然是了解计算机的,那我们就先来了解一下计算机的组成,当时我学计算机组成原理也是学的懵懵逼逼的,唯一一门学完不知道学的是啥的一门课,当真是懵逼树上懵逼果,懵逼树下你和我,我也不知道说的对不对,就先瞎说说吧。

1.由来

  刚开始,计算机确实就是用来计算的,好像是在二战的时候,为了计算炮弹的发射角度,轨道,使得炮弹能够精准打击目标。我们应该都能想象到,这里面涉及的因素很多很多,需要计算的东西也是很多很多,如果是人工计算,那也不知道要算多久,就算给个手摇式计算器,那也不知道要摇多少天。所以才催生了计算机的发明。
  于是,第一代计算机就诞生了,我记得我小时候老师还给我们提过这台计算机,体积巨大,几间屋子那么大,好像是150平方米那么大,也不知道啥时候我才能在我们县城买个这么大的房子,据说这台电脑开一次,全城停电,每秒5000次的运算,那速度在当时真是不得了。

2.为什么是二进制

  我们应该都学过电路,通路就是有电,断路就是没电,那么,我们是不是就可以用这个通路和断路这两个电信号来表示1和0呢,或者说,电路的正负极来表示1和0呢?这样不就可以把电信号表示成数字了嘛。当然,事实上还真不是这么干的,而是用高电平和低电平来表示1和0,就是高电压和低电压,高于多少电压表示1,低于多少电压表示0。
  这时候,我们是不是就想起了大学时候的电工学,当时还有什么逻辑电路,与门,或门,非门等等。那时候感觉学习这电工学有个毛用啊,身为一个软件工程,敲代码的,我学这个干啥,稀里糊涂就过去了。然而正是这些神奇的电路,使得计算机能够表示数字,能够计算。
  当然,这只是我的半吊子理解,不一定对。
  既然0和1都出来了,那么用二进制岂不是就能表示所有的数字了,又有逻辑电路,将数字进行加减乘除,这一下计算机不就成功了嘛。那么符号可不可以用数字表示呢,字母可不可以用数字表示呢?我们能不能用特定位数的二进制数来表示符号和字母呢?当然,这肯定是可以的。

3.冯·诺依曼体系结构

  后来,经过科学家们的不断努力,终于冯·诺依曼体系结构奠定了现代计算机的基础结构,应该说现代计算机的体系结构都是冯·诺依曼体系结构。或许未来的生物计算机,量子计算机可能会跳出这个体系结构,但是咱也不懂,也不好说。
  冯诺依曼体系就是将程序指令和数据一起存储的计算机设计概念结构。什么是指令呢,比如,你要算1+2等于几,那么1和2就是数据,加法就是你的指令,不要想太复杂,就是一个命令而已。或许,你以为这有啥的,难道冯诺依曼之前的计算机不是这样的吗?还真不是。我们知道,计算机里有复杂的电路,早期的计算机里,这些电路结构都是固定的,所以它的用途也是固定的,比如这个计算机是用来计算平方根的,那么它就仅仅只是用来计算平方根,如果你想用它来比较两个数的大小都不行,除非你能更改它的结构,重新设计电路。冯诺依曼体系结构就是将指令与数据一起存储,设计成通用电路,让它做加法就做加法,让它做减法就做减法。
  这样一来,它就必须要有一个存储器,一个运算器,一个控制器,运算器就是进行各种逻辑运算,存储器就是存放数据和指令,控制器就是控制计算步骤,按照指令顺序执行。当然,除了这些,还有输入设备,输出设备就不用说了吧,什么鼠标键盘,显示器。
  当然,现在为了提高计算机的性能,也是做了很多工作,但是,大体上还是逃不出冯诺依曼体系结构。
  发热的猜想:我们知道,高电平表示1,低电平表示0,那么CPU里存了那么多的指令和数据进行那么复杂的计算,那得多少高低电平,加起来就是多少的电压,电阻一定的情况下,电压越高,电流越大,电流越大,发热就越大,所以越好的CPU,发热量就越大是不是就是因为这个呢?

扩展小知识

  早些时候,运算器和控制器合在一起叫做中央处理机,简称CPU。但是呢随着CPU计算速度越来越快,存储器与CPU分开效率就低了很多。你想想,作为CPU每秒几百万,几千万次,几亿次运算,每次计算都要去存储器取出指令和数据,再进行计算,这个取数据的过程就很慢。打个比方:CPU计算一次需要一秒,但是这个取数据的过程就得一个小时,你说说这谁受得了,CPU表示我这暴脾气,忍不了。
  后来大家就想了很多办法,把存储器也放在CPU里,我猜测,那些什么高速缓存,一级缓存,二级缓存什么的都是为了解决计算速度与读取数据的效率问题。

位与字节

  计算机里所有的数据都是0和1组成的,所以,计算机的最小数据容量单位就用bit表示,一个bit代表一个0或者一个1,我们把bit叫做,我猜测加联想:早期的CPU一次只能处理8位的数据,于是就想着把这个8位定义一个单位,就像各种物理单位一样,数大了,就重新定义一个单位,比如一厘米,一米,一公里,一光年,于是,这个8位就叫做字节(Byte),我们现在电脑基本都是64位,代表CPU一次可以处理64位的数据。为了区分bit和Byte的区别,一般字节就用B表示,bit就用b表示,一个大写,一个小写,免的混淆。
  一个字节就是1B,之后有KB,MB,GB,TB等等,每次递进都是2^10大小,1KB=1024B,1MB=1024KB。所以对于程序员来说,2的十次方才是整数,1000不是整数,1024才是整数。
  说起这个,再给说一个大家可能知道的小知识,网络带宽,大家应该都熟悉,家里安装的什么20M带宽啊,百兆带宽啊,千兆带宽啊之类的。这里M其实是网络传输速率,Mbps才是完整的写法,1Mbps=1Mbit/s,每秒传输1Mbit而不是1MB,所以,你还需要把它除于8才是MB,比如,100Mbit/s=12.5MB/s,所以你家里的百兆带宽,理想情况下最高速率是12.5MB/s。Mbps就是Million bits per second的缩写。

编码

  为了使计算机能表示更多的东西,于是就出现了编码,比如我们规定,001表示字母a,002表示字母b,003表示换行等等,整一个大家都遵循的规范,这就是编码。什么ASCII码啊,GBK啊,UTF8啊,等等各种各样的编码方式,为什么会出现这么多编码方式呢?主要是因为随着计算机的普及,要表示的东西越来越多,比如刚开始,美国用英文,他们只需要表示英文字母,英文符号的编码方式就可以。现在呢,计算机全世界都要用,只能改进编码方式,让它可以表示全世界各国的语言和符号。
  说起来这个,我就想到编程的时候总会遇见各种各样的编码不一致的问题。微软似乎默认就是GBK的编码方式,所以,我曾经把tomcat改成UTF8编码在DOS命令窗口输出日志就是乱码,改成GBK就不乱码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值