一、问题描述

JAVA实现模拟图灵机实现自然数乘2的过程。


二、算法构造

编码规则
0→0;
1→10;
, →110;


处理方法

  • 内态为0,输入为0→内态为0,输出为0,右移;
  • 内态为0,输入为1→内态为1,输出为0,右移;
  • 内态为1,输入为0→内态为0,输出为1,右移;
  • 内态为1,输入为1→内态为10,输出为0,右移;
  • 内态为10,输入为0→内态为11,输出为1,右移;
  • 内态为11,输入为0→内态为0,输出为1,STOP;

三、流程设计


四、算法实现

TuLing类

/*** @author jitwxs* @date 2021年04月01日 19:46*/
public class TuLing {/**** @author jitwxs* @date 2021/4/1 19:47* @param a 输入的值a* @return java.lang.StringBuffer*/public StringBuffer trans(int a){String string=Integer.toBinaryString(a);StringBuffer str=new StringBuffer(string.replace("1","10"));str.append("1100");System.out.println("二进位码为:"+str);return str;}/*** 对转换后的码进行乘二运算* @author jitwxs* @date 2021/4/1 19:47* @param str 转换为二进位码*/public void deal(StringBuffer str){//inBL为内态变量for(int i = 0, inBL = 0; i<str.length(); i++){if(inBL ==0&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'0');System.out.println("内态:0,输入:0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==0&&str.charAt(i)=='1'){inBL =1;str.setCharAt(i,'0');System.out.println("内态:0,输入:1,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==1&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'1');System.out.println("内态:1,输入: 0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==1&&str.charAt(i)=='1'){inBL =10;str.setCharAt(i,'0');System.out.println("内态:1,输入:1,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==10&&str.charAt(i)=='0'){inBL =11;str.setCharAt(i,'1');System.out.println("内态:10,输入:0,变为: "+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==11&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'1');System.out.println("内态:11,输入:0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));break;}}}}

Main

import java.util.Scanner;public class Main {public static void main(String[] args) {TuLing tuLing=new TuLing();Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数:");int number = scanner.nextInt();StringBuffer stringBuffer= tuLing.trans(number);tuLing.deal(stringBuffer);System.out.println("计算后二进位码为:"+stringBuffer);stringBuffer.delete(stringBuffer.length()-2, stringBuffer.length());System.out.println("计算结果:"+Integer.parseInt(stringBuffer.toString().replace("10", "1"), 2));}
}

测试:
测试数据:5
测试结果:10


小结
学习了解了StringBuffer类的使用,巩固了类型转换。

模拟图灵机XN乘2的过程相关推荐

  1. ##模拟图灵机 XN*2的运算

    ##模拟图灵机 XN*2的运算(文末源代码) 题目要求: 对XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步 ...

  2. java实现图灵机XN*2并输出中间过程

    java实现图灵机XN2并输出中间过程 题目: 对XN2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果. ...

  3. (C++)模拟图灵机-简单的UN+1和UN*2

    问题描述 对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果.(本文模拟的是UN+1和UN*2的图灵机) ...

  4. 【181130】VC++ 模拟地球太阳月亮运动的过程源代码

    源码下载简介 VC++ 模拟地球太阳月亮运动的过程. 源码下载地址:点击下载 备用下载地址:点击下载

  5. ☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️《❤️记得收藏❤️》

    ☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️<❤️记得收藏❤️> 目录

  6. 应用Abaqus有限元软件中的cohesive单元模拟压头侵入地层随机断裂过程

    应用 Abaqus有限元软件中的 cohesive单元模拟压头侵入地层随机断裂过程. 建立的压头侵入地层的有限元模型如图2所示.其中球形压头直径为1mm,高为3mm,厚度为0.5mm.将其设置为刚体, ...

  7. 2.4模拟打牌游戏中的发牌过程

    摩尔的Java学习笔记2.4 第二周作业: 1.实现将一组整数进行升序排列: 2.用二维数组实现,5个学生4门课程的总分和平均分的统计工作: 3.打印八行八列杨辉三角,开头不打印空格: 4.模拟打牌游 ...

  8. 模拟蚂蚁森林的能量产生过程

    模拟蚂蚁森林的能量产生过程 for i in range(100):print(""" 能量查询请输入能量来源!退出程序请输入0 能量来源如下: 生活缴费.行走捐.共享单 ...

  9. Java基础实现模拟地下城与勇士(DNF)的装备强化过程

     大家好,我是kai_Childe,作为一名java刚入门的小白,本期就以java基础来模拟地下城与勇士(DNF)的装备强化过程,并以此来记录我的学习过程. 文章目录 强化未成功惩罚机制 各等级强化成 ...

最新文章

  1. jittor和pytorch生成网络对比之cogan
  2. 强!chrome彻底关闭自动升级新方法实例演示,终于解决了chrome自动升级的烦恼
  3. 用户画像-参考整理医疗app标签
  4. java 字符串 面试_Java 字符串面试题
  5. 使用 json_serializable (flutter packages pub run build_runner build) 问题
  6. php 字符串分割成两段,php 两个字符串分割合并的简单示例
  7. 数据湖之iceberg系列(三)iceberg快速入门
  8. 红帽 安装oracle11g,64位RedHat 5.6下安装Oracle 11g
  9. y7000怎么刷电池固件_redmi(红米)AC2100,刷老毛子固件
  10. python编写程序题目_让我们一起来写python程序,做些简单的题目
  11. PIE SDK地图书签
  12. Ghost配置2——添加代码高亮
  13. python中属性与方法_python中属性和方法的动态绑定
  14. 如何检查CentOS版本– 8种方法
  15. 计算机知识说明,请说明计算机的工作原理
  16. 文物摄影中白平衡的正确设置(图)
  17. 详解PON基础知识:OLT、ONU、ONT和ODN
  18. C++青少年编程课程体系与教案
  19. 无法解析的外部符号__imp____iob_func
  20. 小白用户的福音——win10系统云重装

热门文章

  1. Vitis 加速环境简介
  2. TCP模拟HTTP发送get和post请求
  3. php、git、redis函数合集
  4. AEM CV100 多功能线缆测试仪可以做什么?
  5. 小姐姐太强了,动图展示 10 大 Git 命令,不会都难
  6. ESD静电保护二极管应用行业举例
  7. 巧用order实现列表排序
  8. python打卡以及Linux自动运行python文件
  9. Python 入门打卡1
  10. VBA-循环语句之For Each..Next