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

原创 2005年04月26日 17:03:00

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]){
    a=add(a,negm);
    printArray(a);
    System.out.print("/t/t/t");
    System.out.println("-");
   }
   else{
    a=add(a,m);
    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结构和内部工作

计算机系统硬件组成 计算机系统的基本组成由:计算器、控制器、存储器、输入和输出设备这5大核心部件组成。 运算器和控制器等继承在一起成为CPU,下面通过这张图可以很清晰的表达计算机系统。...
  • akkzhjj
  • akkzhjj
  • 2014年04月24日 11:39
  • 3069

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

一、计算机系统结构的概念1.1 计算机系统的层次结构划分为多级层次结构的优点: (1)便于理解计算机的整体工作概念及目前软硬件的作用和地位; (2)便于认识语言的实质和实现方法; (3)便于搜索虚拟机...
  • codeforcer
  • codeforcer
  • 2016年05月05日 23:56
  • 3015

项目组织与分工

项目经理(PM) 项目经理负责项目的具体实施管理工作,是项目实施中最主要的角色。他的主要责任是: ·         选定项目小组成员; ·         协调项目资源配置; ·      ...
  • xianyu_0418
  • xianyu_0418
  • 2011年09月07日 09:32
  • 2793

数据结构(计算机存储、组织数据方式)

数据结构(计算机存储、组织数据方式) 编辑 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或...
  • haiross
  • haiross
  • 2014年02月14日 15:22
  • 4633

Java递归相关题目

指尖上的Java 2016-12-30 21:37 主页菌按时报到!主页菌由于明天公司要开会(不开僧),所以呢就提前分享几道关于递归的问题,同时也涉及到文件的一点知识!最后再给大家把前几天发...
  • u011277123
  • u011277123
  • 2017年01月03日 09:07
  • 247

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

问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法)public voi...
  • lilianforever
  • lilianforever
  • 2016年07月08日 16:05
  • 949

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

自己写一直报错一直报错。。。然后还是参考了机器学习实战上关于数据集划分的部分,所以这篇主要为了记录一下实战上的好方法:还可以这样分?!先上图:下面直接上代码:# -*- coding:utf-8 -*...
  • zuanfengxiao
  • zuanfengxiao
  • 2018年01月18日 11:03
  • 30

ACM:素数线性筛法

通过一道题来讲一下素数筛法。 (我理解的素数筛法。。不一定对) 原题: https://vjudge.net/contest/205544#problem/H 题目在文章末尾。 在此之前可以先...
  • qq_40873884
  • qq_40873884
  • 2018年01月22日 01:22
  • 64

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

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

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

在电视上看到的游戏,规则是:移动1根(目前只看到1根的,或许有两根或以上,不过再多就比较难了)火柴,使给出的4位数成为最大(或最小)。当然火柴不能弄断,也不能消失什么的,这点和偶们小学暑假作业的那种不...
  • superarhow
  • superarhow
  • 2007年08月10日 16:30
  • 1599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机组织与结构第二道题目的JAVA解法
举报原因:
原因补充:

(最多只允许输入30个字)