随笔分类 -  程序是怎样跑起来的

摘要:正则表达式: 尾数部分使用正则表达式(按照特定的规则来表示数据的形式即为正则表达式。除小数之外,字符串以及数据库等,也都有各自的正则表达式。),可以将表现形式多样的浮点数统一为一种表现形式。 例如,十进制数0.75有很多种表现形式,如图3-5 二进制数也是同样的道理,在二进制中,是将“小数点前面的值 阅读全文
posted @ 2023-02-08 21:44 叮铃铛铛 阅读(45) 评论(0) 推荐(0)
摘要:像1011.0011这样带小数点的表现形式,在计算机内部是无法使用的。(计算机无法直接处理循环小数) 两种表示小数的数据类型,分别是双精度浮点数类型(用64位)、点精度浮点数类型(用32位)来表示全体小数。这些数据类型都采用浮点数来表示小数,那么浮点数究竟采用怎样的方式来表示小数呢? 浮点数是指用符 阅读全文
posted @ 2023-02-08 17:37 叮铃铛铛 阅读(314) 评论(0) 推荐(0)
摘要:计算机之所以会出现运行错误,是因为“有一些十进制数的小数无法转换成二进制数”。例如十进制数0.1就无法用二进制数正确表示,小数点后面即使有几百位也无法正确表示。 不能正确表示的原因: 图3-2是小数点后四位能够用二进制数表示的数值范围为0.0000~0.1111(二进制数是连续的,十进制数是非连贯的 阅读全文
posted @ 2023-02-08 16:48 叮铃铛铛 阅读(18) 评论(0) 推荐(0)
摘要:由于计算机内部所有的信息都是以二进制数的形式来处理的,因此在这一点上,整数和小数并无差别。不过,使用二进制数来表示整数和小数的方法却有很大的不同。 把1011.0011这个小数二进制数转换成十进制数。小数点前面部分的转换方法,只需将各数位数值和位权相乘的结果相加即可。 小数点后面部分的转换方法,也是 阅读全文
posted @ 2023-02-07 21:34 叮铃铛铛 阅读(99) 评论(0) 推荐(0)
摘要:由心算得:0.1累加100次后的结果是10,但是由程序运行之后显示的结果不是10。 程序没有错,计算机也没有出现故障,当然C语言也没有问题,可为什么会出现这样的结果呢? 这时如果考虑下计算机处理小数的机制,就讲的通了。那么计算机内部是如何处理小数的呢? 阅读全文
posted @ 2023-02-07 21:19 叮铃铛铛 阅读(26) 评论(0) 推荐(0)
摘要:将二进制数表示的信息作为四则运算的数值来处理就是算术。而像图形模式那样,将数值处理为单纯的0和1的罗列就是逻辑。 计算机能处理的运算,大体可分为算术运算和逻辑运算。算术运算是指加减乘除四则运算。逻辑运算是指对二进制数各数字位的0和1分别进行处的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻 阅读全文
posted @ 2023-02-07 15:27 叮铃铛铛 阅读(115) 评论(0) 推荐(0)
摘要:右移有移位后在最高位补0和补1两种情况。当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0。类似于霓虹灯往右滚动的效果。这就称为逻辑右移。例如图2-9 将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算术右移。 如果数值是用补数表示的负数值,那 阅读全文
posted @ 2023-02-07 15:23 叮铃铛铛 阅读(176) 评论(0) 推荐(0)
摘要:表示负数的方法和右移的方法: 用来填充右移后空出来的高位的数值,有0和1两种形式。 区分什么时候补0什么时候补1:用二进制数表示负数的方法即可 二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。 符号位是0时表示正数,是1时表示负数。 计算机在做减法运算时,实际上 阅读全文
posted @ 2023-02-07 15:17 叮铃铛铛 阅读(112) 评论(0) 推荐(0)
摘要:和十进制数一样,四则运算同样也可以使用在二进制数中,只要注意逢2进位即可。 移位运算指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个数位的移位操作。 <<表示左移, >>表示右移位,<<和>>运算符的左侧是 阅读全文
posted @ 2023-02-07 14:50 叮铃铛铛 阅读(363) 评论(0) 推荐(0)
摘要:二进制数的值转换成十进制数的值,只需要将二进制数的各数位的值和位权相乘,然后将相乘的结果相加即可。 十进制数是以10为基数的计数方法,二进制数则是以2为基数的技术方法。 阅读全文
posted @ 2023-02-07 14:24 叮铃铛铛 阅读(292) 评论(0) 推荐(0)
摘要:在C和Java等高级语言编写的程序中,数值、字符串和图像等信息在计算机内部都是以二进制数值的形式来表现的。也就是说,只要掌握了使用二进制数来表示信息的方法及其运算机制,也就自然能够了解程序的运行机制了。IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。由于 阅读全文
posted @ 2023-02-07 14:08 叮铃铛铛 阅读(211) 评论(0) 推荐(0)
摘要:机器语言的分类: 阅读全文
posted @ 2023-02-07 14:01 叮铃铛铛 阅读(24) 评论(0) 推荐(0)
摘要:CPU把基址寄存器+变址寄存器的值解释为实际查看的内存地址。变址寄存器的值就相当于高级编程语言程序中数组的索引功能。数组是指同样长度的数据在内存中进行连续排 列的数据构造。用一个数组名来表示全体数据,通过索引来区分数组的各个数据(元素)。例如,一10个元素的数组a,其中的各个 数组a数据就用 a[0 阅读全文
posted @ 2023-02-07 13:56 叮铃铛铛 阅读(36) 评论(0) 推荐(0)
摘要:函数”调用处理是通过把程序计数器的值设定成函数的存储地址来实现的。不过,这和条件分支、循环的机制有所不同,因为单纯的跳转指令无法实现函数的调用。函数的调用需要在完成函数内部的处理后,处理流程再返回到函数调用点(函数调用指令的下一个地址)。因此,如果只是跳转到函数的入口地址,处理流程就不知道应该返回至 阅读全文
posted @ 2023-02-07 13:48 叮铃铛铛 阅读(40) 评论(0) 推荐(0)
摘要:程序的流程分为顺序执行、条件分支和循环三种。 顺序执行是按照地址内容的顺序执行指令(每执行一个指令程序计数器的值就自动加1)。 条件分支是指根据条件执行任意地址的指令。 循环是指重复执行同一地址的指令。 若存在条件分支和循环,机器语言的指令就可以将程序计数器的值任意定为任意地址(不是+1)。 条件分 阅读全文
posted @ 2023-02-07 13:43 叮铃铛铛 阅读(34) 评论(0) 推荐(0)
摘要:图1-4是程序起动时内存内容的模型。用户发出启动程序的指示后,Windows等操作系统会把硬盘中保存的程序复制到内存中,然后会将程序计数器(CPU寄存器的一种)设定为指定开始位置的地址,然后程序便开始运行。CPU每执行一个指令,程序计数器的值就会自动加1. 储存指令和数据的内存,是通过地址来划分的。 阅读全文
posted @ 2023-02-07 13:40 叮铃铛铛 阅读(30) 评论(0) 推荐(0)
摘要:1.程序是把寄存器当作对象来描述的。 2.汇编语言采用助记符来编写程序。 3.机器语言是指CPU可以直接解释和执行的语言。 4.汇编语言和机器语言基本上是一一对应的。 通过上面这个代码例子可以看出:机器语言级别的程序是通过寄存器来处理的,也就是说在程序员看来CPU是寄存器的集合体 程序员眼中的CPU 阅读全文
posted @ 2023-02-07 13:30 叮铃铛铛 阅读(57) 评论(0) 推荐(0)
摘要:CPU(中央处理器)相当于计算机的大脑,CPU和内存都是由许多晶体管组成的电子部件,通常称为IC(集成电路)。 CPU的内部是有寄存器,运算器,控制器,时钟组成的. CPU所负责的就是解释和运行最终转换成机器语言的程序内容 程序运行流程图: 阅读全文
posted @ 2023-02-07 13:21 叮铃铛铛 阅读(202) 评论(0) 推荐(0)