计算机如何存储和表示数字: 二进制。二进制存储单位 MB, GB, TB等。正数,负数,整数,浮点数的表示。美国信息交换标准代码 - ASCII,用来表示字符。UNICODE 1992年诞生,是字符编码标准,解决ASCII不够表达所有语言的问题。二进制中,一个1或0 叫 一位(a bit).8位能表示的最小数字是0, 8位都是0;最大数是255,8位都是1.能表示256个不同的值,2的8次方.8位是如此常见,以至于有专门的名字:字节.1 字节 = 8 位(1 bytes = 8 bits)MB(Mege是百万字节), GB(Giga是十亿字节), TB(8万亿个1和0)等,不同前缀代表不同数量级。1千字节 = 2的10次方 = 1024字节1000也是千字节(KB)的正确单位,也就是1000和1024都是正确单位。32位/64位计算机: 是一块块处理数据,每块是32位或64位。32位能表示的最大数是:43亿左右。(32个1)。现在图片都是用32位颜色。正数,负数,整数,浮点数的表示负数,大部分计算机用第一位表示正负:1是负,0是正。用剩下的31位来表示数字。能表示的数字范围是:正 20亿 到 负 20亿64位能表示最大数是正负9.2 * 10 ^ 18计算机必须给内存中每一个位置,做一个“标记”,这个标记叫“位址(ADDRESSES)”,目的是为了方便存取数据。非整数,常见浮点数。有很多种表示,最常见的是 IEEE 754标准。它用类似科学记数法的方法,来存取十进制值。例如: 625.9 = 0.6259 * 10 ^ 3, .6259叫“有效位数”, 3是“指数”。在32位浮点数中,第1位表示数字的正负,接下里8位存指数,剩下32位存有效位数。ASCII与其用特殊方式来表示字母,计算机可以用数字表示字母,最直接的方法是给字母编号。设计于1963年,ASCII是7位代码,足够存储128个不同值。可以表示大写字母,小写字母,数字0-9,特殊符号以及标点符号。Unicode解决ASCII不够表达所有语言的问题。最常见的Unicode是16位,有超过一百万个位置。对所有语言的每个字符都够了100多种字母表加起来占了12万个位置,还有位置放数学符号,甚至Emoji,就像ASCII用二进制来表示字母一样。其它格式,比如MP3或GIF,用二进制编码声音/颜色,表示照片,电影,音乐。这些标准归根到底是一长串位。短信,视频,互联网上的每个网页,甚至操作系统,只不过是一长串1和0。算术逻辑单元ALU,英特尔74181ALU有2个单元,1个算术单元和1个逻辑单元算术单元: 半加器(处理1个bit,2个输入)。 全加器(处理1个bit,3个输入)。8 bit 加法(1个半加器,7个全加器)逻辑单元:检测数字是否为0的电路(一堆OR门最后加一个NOT门),ALU抽象成V符号,Flag标志(是否相等,是否小于,是否溢出等等)表示和存储数字是计算机的重要功能,但真正的目标是计算,有意义的处理数字。处理数字的操作由计算机的“算术逻辑单元(ARITHMETIC & LOGIC UNIT)”处理,称之为: ALU是计算机的数学大脑计算机里负责运算的组件,基本其它所有部件都用到了ALU英特尔74181:第一个封装在单个芯片内的完整ALU。布尔逻辑,做一个简单的ALU电路功能和 74181差不多。ALU单元ALU有2个单元,1个算术单元和1个逻辑单元。算术单元:负责计算机里所有的数字操作,比如加减法,比如某个数字+1(增量运算)。计算根本“把两个数字相加”,可以用单个晶体管一个个拼,把这个电路做出来,但很快就会复杂到难以理解。所以会使用更高层的抽象,用逻辑门来做。最简单的加法电路,是拿2个bit加在一起(bit是0或1),有2个输入:A和B,1个输出:就是两个数字的和。需要注意的是:A,B,输出,这3个都是单个Bit(0或1),输入只有四种可能。0 + 0 = 01 + 0 = 10 + 1 = 1二进制里,1与true相同,0与false相同。这组输入和输出,和XOR门的逻辑完全一样。1 + 1 = 10使用XOR门不够表示,需要一根额外的线代表“进位”。只有输入是1和1时,进位才是“true”,因为算出来的结果用1个bit存不下,可以和AND门一齐使用,构成半加器半加器/全加器两个输入 A 和 B都是1位,两个输出 “总和”与“进位”。如果想处理超过1 + 1的运算,需要“全加器”。101101—-1010 意味着,算下一列的时候,还有之后的每一列,得加3位在一起,并不是2个。半加器:输出了进位。有3个输入:A,B,C(都是1个bit)所以,最大的可能是:1 + 1 + 1“总和”1,“进位”1,所以要二条输出线: “总和”和“进位”。可以用 半加器 做 全加器:先用半加器将 A 和 B 相加,然后把C输入到第二个半加器,最后用一个OR门检查进位是不是true。可以再提升一层抽象,把全加器作为独立的组件。全加器会把A,B,C三个输入加起来,输出“总和”和“进位”。独立组件:使用独立组件,可以相加两个8位数字。如果第9为有进位,代表着2个数字的和太大了,超过了8位,叫做“溢出”。一般来说“溢出”的意思是,两个数字的和太大了,超过了用来表示的位数,这会导致错误和不可预期的结果。著名的例子是:吃豆人,用8位存当前关卡数。如果玩到了第256关,ALU会溢出,造成一连串错误和乱码,使得该关卡无法进行。避免溢出,可以加更多的全加器,可以操作16或32位数字。让溢出更难发生,但代价是更多逻辑门,另外一个缺点 ,每次进位都要一点时间。如今的量级是每秒几十亿次运算,所以会造成影响。所以,现代计算器用的加法电路有点不同,叫“超前进位加法器”。它更快,做的事情是一样的:把二进制数相加。ALU的算术单元,也能做一些其它数学运算,一般支持这8个操作:ADD 加法ADD WITH CARRY 带进位的加法SUBTRACT 减法NEGATEINCREMENT 增量(+1)DECREMENT 减量(-1)SUBTRACT WIH BORROW 带借位的减法PASS TUROUGU 数字无改变通过就像加法器一样,这些操作也是由逻辑门构成。没什么魔法,只是更多逻辑门。逻辑单元(LOGIC UNIT)逻辑单元执行逻辑操作,AND, OR, NOT操作。也能做简单的数值测试。比如一个数字是不是负数。检查ALU输出是否为0的电路:使用一堆OR门检查其中一位是否为1,哪怕只有一个Bit(位)是1,就知道那个数字肯定不是0,然后用一个NOT门取反。所以只有输入的数字是0,输出才为1。只是一大堆逻辑门巧妙的连接在一起。特殊符号来表示ALU:8位ALU有两个输入,A和B,都是8位(bits),还需要告诉ALU执行什么操作,例如加法或减法,所以用4位的操作代码告知ALU,简言之,“1000"可能代表加法命令,“1100"代表减法命令。操作代码告诉ALU执行什么操作,输出结果是8位的,ALU还会输出一堆标志(FLAG),“标志”是1位的,代表特定状态。比如相减两个数字,结果为0。ALU常用标志:OVERFLOW(BIT) 是否溢出ZERO(BIT) 是否相等NEGATIVE(BIT) 是否负数计算机是怎样在没有齿轮或杠杆的情况下进行运算?晶体管二进制逻辑门ALU(算术单元和逻辑单元)计算机需要一些“记忆”。