对于XN+1或XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或pytho

对于XN+1或XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或python语言实现程序解决问题。

import java.util.Scanner;    

public class yy {
 	public static void main(String args[]) {
 		Scanner reader=new Scanner(System.in );
 		System.out.print("请输入一个整数:");
 		int n=reader. nextInt();
 		String s;
 		 //将十进制转化为二进制
 		s = Integer.toBinaryString(n);
 		System.out.println("输出该数的二进制:"+s);
 		//拓展二进制编码
 		StringBuffer a = new StringBuffer(s.replace("1","10"));
 		a.append("1100");
 		System.out.println("输出拓展后二进制编码:"+a);
 		calculate(a);
 		System.out.println("计算结果为:"+a);
 		//删去无效数字
 		String c= a.substring(0, a.length()-2);
 		System.out.println(c);
 		 //将二进制转化为十进制
 		int b=0;
 		b=Integer.parseInt(c.replace("10", "1"), 2);
 		System.out.println("计算结果译码后的十进制为:"+b);
 		}
 	
	
 	static void calculate(StringBuffer s){
	 //y为内态变量
	for(int i=0,y=0;i<s.length();i++){
		//00→00
		if(y==0 & s.charAt(i)=='0'){
			y=0;
			s.setCharAt(i,'0');	
			System.out.println("00→00:   "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			continue;
		}
		//01→10
		if(y==0 & s.charAt(i) =='1'){
			y=1;
			s.setCharAt(i,'0');
			System.out.println("01→10:   "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			continue;
		}
		//10→01
		if(y==1 & s.charAt(i)=='0'){
			y=0;    
			s.setCharAt(i,'1');
			System.out.println("10→01:   "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			continue;
		}
		//11→10 0
		if(y==1 & s.charAt(i)=='1'){
			y=10;
			s.setCharAt(i,'0');
			System.out.println("11→100:  "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			continue;
		}
		//10 0→11 1
		if(y==10 & s.charAt(i)=='0'){
			y=11;
			s.setCharAt(i,'1');
			System.out.println("100→111: "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			continue;
		}
		//11 0→01
		if(y==11 & s.charAt(i)=='0'){
			y=0;
			s.setCharAt(i,'1');
			System.out.println("110→01: "+s+" 内态为:"+y+" 输出为:"+s.charAt(i));
			break;
		}
	}
	
 }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值