滴水编程 预备课

学习目标:

滴水编程 预备课

学习内容:

01.01 计算机发展史
02.01 计算机结构
02.02 基本概念
02.03 存储器的读写
02.04 总线
02.05 主板 接口卡 各类存储芯片
03.01 计算机软件发展史
04.01 进制
04.02 进制运算
04.03 二进制的简写与转换
04.04 数据宽度
04.05 有符号数无符号数
04.06 原码反码补码
05.01 布尔运算
05.02 位运算之加减乘除
06.01 常用编码规则

学习时间:

2022.05.23 - 2022.05.29

作业笔记:

01.01 计算机发展史

  1. 通过在网上查阅本节视频涉及内容的详细资料。培养自主学习,自己动手,解决问题的能力。

02.01 计算机结构

  1. 自己动手组装一次PC机,熟悉PC机的各个组成部分。DIY过PC机的同学可以忽略。

  2. 写出5个虚拟机层次,并说明处理不同虚拟机层使用的翻译技术。
    答: 第0层不允许普通用户编写微指令,属于商业秘密。

    第1层机器语言指令集:是固化在处理器内部,执行移动、
    加法和乘法等操作,每条机器语言分成几条微指令执行。

    第2层操作系统:能够理解用户发出的诸如并执行程序、
    显示目录之类的交互命令。操作系统被翻译为机器码在
    第1层执行。

    第3层汇编语言:在操作系统之上,能够实际开发大型软件
    的翻译层。汇编指令被翻译成机器语言,由操作系统执行。

    第4层高级语言:诸如C++、C#、JAVA之类的高级语言先
    翻译成汇编语言,然后再转为机器语言,由操作系统执行。

    其他应用脚本类的应用语言翻译为高级语言然后执行。

  3. 程序员为什么不可以使用微代码编写应用程序?
    答: 因为CPU的微指令,不开源。是商业秘密。

  4. 如果自己组装一台PC机,需要购买哪些部件,注意哪些细节?不明白的可以网上查阅资料或者询问卖家客服。

  5. 冯.诺伊曼计算机的特点是什么?
    答: 数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制
    器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

  6. 画出主机组成结构图,并说明各个部件的作用是什么?

  7. 汇编语言是由操作系统翻译成机器语言的,这个说法对吗?请说明。
    答: 汇编指令被汇编器翻译成机器语言,由操作系统执行.

02.04 总线

  1. 1个CPU的寻址能力为16KB,那么它的地址总线宽度是多少?
    答: 1KB=1024B 16KB=131072bit 131072(bit)=2的17次方 有17根地址总线.

  2. 2KB的存储器有_____个存储单元。存储单元的编号从____到______.
    答: 2KB=2048B=16384b (pc最小存储单元是bit).存起有2048个存储单元,存储单元的编码从0到16383.

  3. 2KB的存储器可以存储_____bit,________byte.
    答: 16384 ,2048.

  4. 1GB、1MB、1KB分别是__________________byte。
    答: 1KB=1024B,1M=1048576B 1G=1073741824B.

  5. 8080、8088、8086、80286、80386的数据线宽度分别是8根,8根,16根,16根,32根,则它们一次可以传送的数据为:
    ___ (B)、___ (B)、___ (B)、___ (B)、___(B)

    答: 1B, 1B, 2B, 2B, 4B.

  6. 8080、8088、80286、80386的地址总线宽度分别为16根,20根,24根,32根,则他们的寻址能力分别为____(KB)、____(MB)、 _____ (MB)、_____(GB)
    答: 2的16次方=64kb、2的20次方=1048576kb=1M、2的24次=16777216kb=16M、2的32次方=4294967296b=4G.

  7. 从内存中读取1024个字节的数据,8086至少需要读____次,80386至少读___次
    答: 1024/2=512次、1024/4=256次.

  8. 存储器中,数据和程序以_____形式存放。
    答: 二进制.

  9. 如何驱动CPU进行工作的呢?请举例说明?
    答: CPU的工作是依靠数据来进行的。没有数据的CPU的无法进行工作的.例子:用键盘鼠标,向CPU输入数据.输入:1+1.数据从鼠
    标键盘传入存储器-存储器传入CPU,CPU分类数据或指令,然后一一进行工作.

  10. 请查阅相关机器码资料。

02.05 主板 接口卡 各类存储芯片

  1. 16位和32位机器的内存地址空间是多少?寻址范围是多少?
    答: 16位的内存地址空间是64KB,寻址范围是2的16次方=65536B
    32位内存地址空间是4GB,寻址范围是2的32次方=4294967296B

  2. PC中包含哪些存储器?
    答: PC存储器按属性划分,主要有ROM,和RAM。ROM存储器主要装BIOS(输入输出程序),RAM储存暂时的数据。主板上的
    (RAM)主存储器,扩展插槽上的(RAM),网卡ROM(装有网卡的BIOS),显卡ROM等。

  3. 为什么有些地址读写无效?
    答: 因为数据写入ROM只读存储器。所有不能写入数据,因为数据写入只写存储器WOM,不能读数据。

  4. 请描述显示器显示信息的过程?

  5. CPU如何控制外部设备的?
    答: 通过数据总线和控制总线.

03.01 计算机软件发展史

  1. 网上查阅自己感兴趣的资料

04.01 进制

  1. 2+3=1 成立吗?说明理由。
    答: 当用1表示第五位的符号时成立.

  2. 分别用2、5、7、9、16进制写100个数,从0开始。
    答:

    二进制
    0,1
    10,11
    100,101
    110,111

    五进制
    0,1,2,3,4
    10,11,12,13,14,
    20,21,22,23,24
    30,31,32,33,34

    七进制
    0,1,2,3,4,5,6
    10,11,12,13,14,15,16
    20,21,22,23,24,25,26
    30,31,32,33,34,35,36

    九进制
    0,1,2,3,4,5,6,7,8
    10,11,12,13,14,15,16,17,18
    20,21,22,23,24,25,26,27,28
    30,31,32,33,34,35,36,37,38

    十六进制
    0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
    10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F
    20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F
    30,31,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F

  3. 自定义十进制:A S B L K 6 7 V 9 5,从0开始写100个数
    答:

    A,S,B,L,K,6,7,V,9,5
    SA,SS,SB,SL,SK,S6,S7,SV,S9,S5
    BA,BS,BB,BL,BK,B6,B7,BV,B9,B5
    LA,LS,LB,LL,LK,L6,L7,LV,L9,L5

04.02 进制运算

  1. 编制7进制加法表,乘法表,并计算下面的结果:
    23456+54356=? 5621-654=? 234*65=?
    答:
    7进制加法表
     1+1=2	 	 	 	 	 
     2+1=3	    2+2=4	 	 	 	 
     3+1=4	    3+2=5	    3+3=6	 	 	 
     4+1=5	    4+2=6	    4+3=10	4+4=11	 	 
     5+1=6	    5+2=10	    5+3=11	5+4=12	5+5=13	 
     6+1=10	    6+2=11	    6+3=12	6+4=13	6+5=14	6+6=15
    
   7进制乘法表
 	1*1=1	 	 	 	 	 
 	2*1=2	2*2=4	 	 	 	 
	3*1=3	3*2=6	3*3=12	 	 	 
 	4*1=4	4*2=11	4*3=15	4*4=22	 	 
 	5*1=5	5*2=13	5*3=21	5*4=26	5*5=34	 
 	6*1=6	6*2=15	6*3=24	6*4=33	6*5=42	6*6=51

23456+54356=11145
5621-654=4634
234*65=22566

  1. 编制16进制加法表,乘法表,并计算下面的结果:
    2D4E6+CF3A6=? 5FD1-E5A=? 2CA*A5=?
    答:
     16进制加法表
     1+1= 2
     1+2= 3  | 2+2= 4
     1+3= 4  | 2+3= 5  | 3+3= 6
     1+4= 5  | 2+4= 6  | 3+4= 7  | 4+4= 8
     1+5= 6  | 2+5= 7  | 3+5= 8  | 4+5= 9  | 5+5= A
     1+6= 7  | 2+6= 8  | 3+6= 9  | 4+6= A  | 5+6= B  | 6+6= C
     1+7= 8  | 2+7= 9  | 3+7= A  | 4+7= B  | 5+7= C  | 6+7= D  | 7+7= E
     1+8= 9  | 2+8= A  | 3+8= B  | 4+8= C  | 5+8= D  | 6+8= E  | 7+8= F  | 8+8= 10
     1+9= A  | 2+9= B  | 3+9= C  | 4+9= D  | 5+9= E  | 6+9= F  | 7+9= 10 | 8+9= 11 | 9+9= 12
     1+A= B  | 2+A= C  | 3+A= D  | 4+A= E  | 5+A= F  | 6+A= 10 | 7+A= 11 | 8+A= 12 | 9+A= 13 | A+A= 14
     1+B= C  | 2+B= D  | 3+B= E  | 4+B= F  | 5+B= 10 | 6+B= 11 | 7+B= 12 | 8+B= 13 | 9+B= 14 | A+B= 15 | B+B= 16
     1+C= D  | 2+C= E  | 3+C= F  | 4+C= 10 | 5+C= 11 | 6+C= 12 | 7+C= 13 | 8+C= 14 | 9+C= 15 | A+C= 16 | B+C= 17 | C+C= 18
     1+D= E  | 2+D= F  | 3+D= 10 | 4+D= 11 | 5+D= 12 | 6+D= 13 | 7+D= 14 | 8+D= 15 | 9+D= 16 | A+D= 17 | B+D= 18 | C+D= 19 | D+D= 1A
     1+E= F  | 2+E= 10 | 3+E= 11 | 4+E= 12 | 5+E= 13 | 6+E= 14 | 7+E= 15 | 8+E= 16 | 9+E= 17 | A+E= 18 | B+E= 19 | C+E= 1A | D+E= 1B | E+E= 1C
     1+F= 10 | 2+F= 11 | 3+F= 12 | 4+F= 13 | 5+F= 14 | 6+F= 15 | 7+F= 16 | 8+F= 17 | 9+F= 18 | A+F= 19 | B+F= 1A | C+F= 1B | D+F= 1C | E+F= 1D | F+F= 1E
    
   16进制乘法表
   1*1= 1
   1*2= 2 | 2*2= 4
   1*3= 3 | 2*3= 6  | 3*3= 9
   1*4= 4 | 2*4= 8  | 3*4= C  | 4*4= 10
   1*5= 5 | 2*5= A  | 3*5= F  | 4*5= 14 | 5*5= 19
   1*6= 6 | 2*6= C  | 3*6= 12 | 4*6= 18 | 5*6= 1E | 6*6= 24
   1*7= 7 | 2*7= E  | 3*7= 15 | 4*7= 1C | 5*7= 23 | 6*7= 2A | 7*7= 31
   1*8= 8 | 2*8= 10 | 3*8= 18 | 4*8= 20 | 5*8= 28 | 6*8= 30 | 7*8= 38 | 8*8= 40
   1*9= 9 | 2*9= 12 | 3*9= 1B | 4*9= 24 | 5*9= 2D | 6*9= 36 | 7*9= 3F | 8*9= 48 | 9*9= 51
   1*A= A | 2*A= 14 | 3*A= 1E | 4*A= 28 | 5*A= 32 | 6*A= 3C | 7*A= 46 | 8*A= 50 | 9*A= 5A | A*A= 64
   1*B= B | 2*B= 16 | 3*B= 21 | 4*B= 2C | 5*B= 37 | 6*B= 42 | 7*B= 4D | 8*B= 58 | 9*B= 63 | A*B= 6E | B*B= 79
   1*C= C | 2*C= 18 | 3*C= 24 | 4*C= 30 | 5*C= 3C | 6*C= 48 | 7*C= 54 | 8*C= 60 | 9*C= 6C | A*C= 78 | B*C= 84 | C*C= 90
   1*D= D | 2*D= 1A | 3*D= 27 | 4*D= 34 | 5*D= 41 | 6*D= 4E | 7*D= 5B | 8*D= 68 | 9*D= 75 | A*D= 82 | B*D= 8F | C*D= 9C | D*D= A9
   1*E= E | 2*E= 1C | 3*E= 2A | 4*E= 38 | 5*E= 46 | 6*E= 54 | 7*E= 62 | 8*E= 70 | 9*E= 7E | A*E= 8C | B*E= 9A | C*E= A8 | D*E= B6 | E*E= C4
   1*F= F | 2*F= 1E | 3*F= 2D | 4*F= 3C | 5*F= 4B | 6*F= 5A | 7*F= 69 | 8*F= 78 | 9*F= 87 | A*F= 96 | B*F= A5 | C*F= B4 | D*F= C3 | E*F= D2 | F*F= E1

2D4E6+CF3A6=FC88C
5FD1-E5A=5177
2CA*A5=1CC32

  1. 9进制定义:由9个符号组成,分别是:2、9、1、7、6、5、4、8、3,逢9进1。计算: 123 + 234 = ?
    答:
    123 + 234 =725

  1. 10进制定义:由10个符号组成,分别是:!、@、$、%、^、&、*、A、B、C,逢10进1 计算: @$$B + %AC& = ?
    答:
    @$$B + %AC& =&!$%

04.03 二进制的简写与转换

  1. 将下面的二进制数用16进制表示(不允许使用计算器也不允许计算)
    1100 1011 0101 0100 1110 1011 0101 0111 1011 0100 1010 1011
    答:C B 5 4 E B 5 7 B 4 A B

  2. 将下面的十六进制数用二进制表示(不允许使用计算器也不允许计算)
    487FDC120ACE69B953FE
    答:‭0100 1000 0111 1111 1101 1100 0001 0010 0000 1010 1100 1110 0110 1001 1011 0100 0101 0011 1111 1110

  3. 将下面的二进制数转换为十进制数(无符号数先使用算法,然后用计算器检验)
    00100111B 101101101111B 01100001B
    答:39D 2927D 97D

  4. 将下面的十进制数转换为二进制数(无符号数先使用算法,然后用计算器检验)
    121D 2345D 13124D 121798D
    答:1111001B 100100101001B 11001101000100B 11101101111000110B

  5. 将下面的16进制数转换为十进制数(无符号数先使用算法,然后用计算器检验)
    87DAFH 875B3FH 7A8CBFFH 1234H
    答:556463D 8870719D 128502783D 4660D

  6. 将下面的十进制数转换为十六进制数(无符号数先使用算法,然后用计算器检验)
    412434D 3643D 643262D 345D
    答:64B12H E3BH 9D0BEH 159H

04.04 数据宽度

  1. 仔细体会计算机计数与数学计数的区别:计算机中的数据一定是有宽度限制的
    答:
    数学上的数字,是没有限制的,可以无限大,而在计算机中,受硬件的制约,数据是有长度的.

  2. 思考题:为什么计算机会被称为16位、32位计算机或者64位呢?
    答:
    16位 32位 64位等术语主要是指存储器定址的宽度.如果存储器的定址宽度是16位,那么每一个存储器地址可以用16个二进制位来表示,也就是说可以在64KB的范围内定址.同样道理32位的宽度对应4GB的定址范围,64位的宽度对应16TB的定址范围.

  3. 如果数据超过内存单元的数据宽度,计算机还可以对该数据进行加减乘除运算吗?
    答:
    仍然可以加减乘除,但是超过最大宽度的数据将会丢失一部分,.

04.05 有符号数无符号数

  1. 记住8个主要点

04.06 原码反码补码

  1. 为什么要有数据宽度?
    答: 数学上的数字,是没有大小限制的,可以无限大.但是在计算机中,由于受到硬件的制约,数据是有长度限制的(我们称为数据宽度).

  2. 已知0x9A是一个有符号数,那么请说明它是正数还是负数?
    答: 负数,0x9A原码是1001 1010,反码是1110 0101,补码是1110 0110.

  3. 分别列出 6、-6、7、-7、8、-8、9、-9、1、-1、0、-0 的原码反码补码
    答: 6原码是0000 0110,反码是0000 0110,补码是0000 0110.
    -6原码是1000 0110,反码是1111 1001,补码是1111 1010.
    7原码是0000 0111,反码是0000 0111,补码是0000 0111.
    -7原码是1000 0111,反码是1111 1000,补码是1111 1001.
    8原码是0000 1000,反码是0000 1000,补码是0000 1000.
    -8原码是1000 1000,反码是1111 0111,补码是1111 1000.
    9原码是0000 1001,反码是0000 1001,补码是0000 1001.
    -9原码是1000 1001,反码是1111 0110,补码是1111 0111.
    1原码是0000 0001,反码是0000 0001,补码是0000 0001.
    -1原码是1000 0001,反码是1111 1110,补码是1111 1111.
    0原码是0000 0000,反码是0000 0000,补码是0000 0000.
    -0原码是0000 0000,反码是0000 0000,补码是0000 0000.

  4. 已知数据宽度为8Bit,请通过下面的值得到对应原码:
    7F 9A 86 5F 3E A3 B7 5D
    答:7F原码是0111 1111.
    9A原码是1001 1010.
    86原码是1000 0110.
    5F原码是0101 1111.
    3E原码是0011 1110.
    A3原码是1010 0011.
    B7原码是1011 0111.
    5D原码是0101 1101.

  5. 已知数据宽度为32 Bit,请通过下面的值得到对应原码:
    0xFFFFFF 0x81234567
    答:0xFFFFFF原码是0000 0000 1111 1111 1111 1111 1111 1111.
    0x81234567原码是1000 0001 0010 0011 0100 0101 0110 0111.

  6. 有符号的正数是原码存储 有符号的负数是补码存储 那么无符号数呢?
    答:无符号数的正数是原码存储 ,无符号数的负数是原码存储,因为无符号数原码,反码,补码都等于原码.

  7. 当计算机中存储的0x81234时,代表的值是多少?
    答:0x81234代表的值是528948.

05.01 布尔运算

  1. 思考:0为假,1为真

  2. 计算机是二进制运算的
    答:1.

  3. 布尔运算用于二进制运算,也叫位运算
    答:1.

  4. 计算机只能做布尔运算,对吗?
    答:1.

05.02 位运算之加减乘除

  1. 如何通过位运算判断一个数是奇数还是偶数?
    答:n&1的结果是0就是偶数,是1就是奇数.

  2. 如何读取二进制数中的某一位的值?
    答:将这个二进制数的某一位与1进行&运算,如果结果为1,则该位是1,否则为0.

  3. 如何设置二进制数中的某一位的值?
    答:用 &运算,把对应的二进制位&0或&1来设置,其它位全&1.

  4. 2*8的最高效的实现方式
    答:用移位运算的方式运算:int a=2<<3.

  5. 使用异或对 87AD6 进行加密后再进行解密,加解密密钥:5
    答:

    加密
    1000 0111 1010 1101 0110
    ^
    0101 0101 0101 0101 0101
    =
    1101 0010 1111 1000 0011
    0xD2F83
    解密
    1101 0010 1111 1000 0011
    ^
    0101 0101 0101 0101 0101
    =
    1000 0111 1010 1101 0110
    0x87AD6
  6. 八进制数2-5 在计算器中的的结果是:1777777777777777777775 为什么?
    答:
    计算机只管存储二进制, 其他进制只是表现形式
    64bit下
    2 - 5
    =-3
    11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101
    1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 101
    1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5(八进制)

  7. 只用逻辑运算计算2-3=?(涉及内容:逻辑运算、移位、数据宽度)
    答:
    2:0010、-3:1101(补码表示)
    0010
    xor 1101
    1111(X)
    ​ 0010
    & 1101
    ​ 0000(Y)
    0000 << 1 == 0000 就不用再循环一次了
    1111补 = 1001原 = -1
    若Y左移后不全为0000,则需要再对XY做相同的逻辑运算处理,直到新的Y=0

06.01 常用编码规则

  1. 熟悉常用的各种编码规则,仔细观察编码规则中的规律。

学习产出:

例如:

学习的滴水视频 16个
作业笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙肖醒醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值