1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| import java.util.ArrayList; import java.util.Arrays; import java.util.List;
public class clacdemo {
public static void main(String[] args) { String four = "00000100"; String five = "00000101"; System.out.println(sum(four, five)); }
public static String sum(String num1, String num2) { List<String> list = new ArrayList<>(); list.add(xor(num1, num2)); list.add(and(num1, num2)); if (isZero(list.get(list.size() - 1))) { return list.get(list.size() - 2); } while (true) { list.add(carry(list.get(list.size() - 1))); list.add(xor(list.get(list.size() - 3), list.get(list.size() - 1))); list.add(and(list.get(list.size() - 4), list.get(list.size() - 2))); if (isZero(list.get(list.size() - 1))) { return list.get(list.size() - 2); } } }
public static String xor(String num1, String num2) { List<String> numList1 = Arrays.asList(num1.split("")); List<String> numList2 = Arrays.asList(num2.split("")); List<String> result = new ArrayList<>(); for (int i = 0; i < numList1.size(); i++) { if (numList1.get(i).equals(numList2.get(i))) { result.add("0"); } else { result.add("1"); } } return String.join("", result); }
public static String and(String num1, String num2) { List<String> numList1 = Arrays.asList(num1.split("")); List<String> numList2 = Arrays.asList(num2.split("")); List<String> result = new ArrayList<>(); for (int i = 0; i < numList1.size(); i++) { if ("1".equals(numList1.get(i)) && "1".equals(numList2.get(i))) { result.add("1"); } else { result.add("0"); } } return String.join("", result); }
public static Boolean isZero(String num) { List<String> numList = Arrays.asList(num.split("")); for (String tempNum : numList) { if ("1".equals(tempNum)) { return false; } } return true; }
public static String carry(String num) { List<String> numList = Arrays.asList(num.split("")); for (int i = 0; i < numList.size(); i++) { if ("1".equals(numList.get(i))) { try { numList.set(i - 1, "1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("溢出!"); System.exit(0); } numList.set(i, "0"); } } return String.join("", numList); } }
|