# 计算机组织与结构第二道题目的JAVA解法

import java.io.*;

public class Solution{
public static void main(String[] args){
/*int[] a=new int[11];
int[] back=new int[11];
int[] m=new int[11];
int[] negm=new int[11];
int[] q=new int[11];*/

int[] a={1,1,1,1,1,1,1,1,1,1,1,1};
int[] back={1,1,1,1,1,1,1,1,1,1,1,1};
int[] m={0,0,0,0,0,0,0,0,1,1,0,1};
int[] negm={1,1,1,1,1,1,1,1,0,0,1,1};
int[] q={1,1,1,1,0,1,1,0,1,1,1,1};
String flag=new String("+");
boolean suc=true;

printArray(a);
System.out.print("/t");
printArray(q);
System.out.print("/t");
System.out.println("Initial");

for(int n=0;n<12;n++){
shift(a);
a[a.length-1]=q[0];
shift(q);
back=copy(a);
printArray(a);
System.out.print("/t");
printArray(q);
System.out.print("/t");
System.out.println("Shift");

if(a[0]==m[0]){
printArray(a);
System.out.print("/t/t/t");
System.out.println("-");
}
else{
printArray(a);
System.out.print("/t/t/t");
System.out.println("+");
}

if(a[0]==back[0]) suc=true;
else suc=false;

if(suc||zero(a)) set(q,1);
if(!suc&&!zero(a)){
set(q,0);
a=copy(back);
printArray(a);
System.out.print("/t");
printArray(q);
System.out.print("/t");
System.out.println("Backup");

}

}

}

public static int[] add(int[] a,int[] b){
int c=0;
int index;
int[] result=new int[12];
for(index=a.length-1;index>-1;index--){
result[index]=(a[index]+b[index]+c)%2;
c=(a[index]+b[index]+c)/2;
//System.out.println(c);
}
return result;

}

public static void shift(int[] a){
int index;
for(index=0;index<a.length-1;index++){
a[index]=a[index+1];
}
a[index]=0;

}

public static void set(int[] q,int value){
if(q[q.length-1]!=value){
q[q.length-1]=value;
System.out.print("/t/t");
printArray(q);
System.out.print("/t");
System.out.println("Set "+value);

}
}

public static int[] copy(int[] source){
int[] aim=new int[source.length];
for(int index=0;index<source.length;index++)
aim[index]=source[index];
return aim;
}

public static boolean zero(int[] a){
boolean f=true;
for(int i=0;i<a.length;i++){
if(a[i]!=0) f=false;
}
return f;
}

public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
if((i+1)%4==0&&(i+1)!=arr.length)
System.out.print(',');
}
}
}

1111,1111,1111 1111,0110,1111 Initial
1111,1111,1111 1110,1101,1110 Shift
0000,0000,1100   +
1111,1111,1111 1110,1101,1110 Backup
1111,1111,1111 1101,1011,1100 Shift
0000,0000,1100   +
1111,1111,1111 1101,1011,1100 Backup
1111,1111,1111 1011,0111,1000 Shift
0000,0000,1100   +
1111,1111,1111 1011,0111,1000 Backup
1111,1111,1111 0110,1111,0000 Shift
0000,0000,1100   +
1111,1111,1111 0110,1111,0000 Backup
1111,1111,1110 1101,1110,0000 Shift
0000,0000,1011   +
1111,1111,1110 1101,1110,0000 Backup
1111,1111,1101 1011,1100,0000 Shift
0000,0000,1010   +
1111,1111,1101 1011,1100,0000 Backup
1111,1111,1011 0111,1000,0000 Shift
0000,0000,1000   +
1111,1111,1011 0111,1000,0000 Backup
1111,1111,0110 1111,0000,0000 Shift
0000,0000,0011   +
1111,1111,0110 1111,0000,0000 Backup
1111,1110,1101 1110,0000,0000 Shift
1111,1111,1010   +
1110,0000,0001 Set 1
1111,1111,0101 1100,0000,0010 Shift
0000,0000,0010   +
1111,1111,0101 1100,0000,0010 Backup
1111,1110,1011 1000,0000,0100 Shift
1111,1111,1000   +
1000,0000,0101 Set 1
1111,1111,0001 0000,0000,1010 Shift
1111,1111,1110   +
0000,0000,1011 Set 1

• 本文已收录于以下专栏：

## 计算机系统—CPU结构和内部工作

• akkzhjj
• 2014年04月24日 11:39
• 3069

## 计算机系统结构 计算机系统结构的基本概念

• codeforcer
• 2016年05月05日 23:56
• 3015

## 项目组织与分工

• xianyu_0418
• 2011年09月07日 09:32
• 2793

## 数据结构（计算机存储、组织数据方式）

• haiross
• 2014年02月14日 15:22
• 4633

## Java递归相关题目

• u011277123
• 2017年01月03日 09:07
• 247

## 剑指Offer:面试题30——最小的k个数(java实现)

• lilianforever
• 2016年07月08日 16:05
• 949

## 李航统计学习方法决策树的特征选择例5.2python代码

• zuanfengxiao
• 2018年01月18日 11:03
• 30

## ACM：素数线性筛法

• qq_40873884
• 2018年01月22日 01:22
• 64

## 两个有意思的计算机相关的智力题

1. 亮灯问题：    现有100盏灯，编号1到100。每盏灯都有一个开关，开始时，100盏灯全部关闭。    做如下操作：     . 第1次，按下所有编号是1 的倍数的灯的开关；    ...
• wzb56
• 2012年09月09日 12:58
• 757

## 移动火柴问题的程序解法及生成算法

• superarhow
• 2007年08月10日 16:30
• 1599

举报原因： 您举报文章：计算机组织与结构第二道题目的JAVA解法 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)