編譯原理學習筆記(十四)~識別={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既是起始狀態又是結束狀態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章