本文主要是介绍编译原理学习笔记(十四)~识别={0,1}上能被能5整除的二进制数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
例:识别 ={0,1}上能被能5整除的二进制数
正解
解释:
- 状态0、1、2、3、4表示被5除后余数为0 1 2 3 4 的时候(就是圆圈中的数字表示余数为多少)
- 机器对于一个二进制数字,是从左到右,逐个数字扫描。比如二进制数字10010,机器先读入的数字是1,再是0, 0,1, 0。
- 所以第一个读入的数字不是0就是1。如果是0,那么被5除后余数是0(后面统称余数),进入0状态;如果是1,那么余数就是1,进入1状态。
- 第二个读入的数字也不是0就是1.但是这里需要我们对第一个数字分情况进行讨论:如果第一个数字是0,第二个数字是0,那么余数为0(这时数字是00=0),由0状态转向0状态;
- 如果第一个数字是0,第二个数字是1,那么余数是1(这时数字是01=1),由0状态转向1状态;
- 如果第一个数字是1,第二个数字是0,那么余数是2(这时数字是10=2),由1状态转向2状态;
- 如果第一个数组是1,第二个数字也是1,那么余数是3(这时数字是11=3),由1状态转向3状态。【A状态转向B状态,其中A状态是前面已经确定数字的余数,B状态是加上最后一个数字最终的状态】
- 之后的步骤就是以此类推了,仔细一点就可以了,不用着急。
- 注意:状态0既是起始状态又是结束状态
这篇关于编译原理学习笔记(十四)~识别={0,1}上能被能5整除的二进制数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!