Thread: Binary Addition
View Single Post
  #10 (permalink)  
Old 04-23-2008, 07:39 PM
danielstoner's Avatar
danielstoner danielstoner is offline
Senior Member
 
Join Date: Apr 2008
Location: Canada
Posts: 191
danielstoner is on a distinguished road
Hi Deo, here is your algorithm if I understood the problem

Code:
package test; import java.util.*; public class BinaryAdd { private static boolean [] add(boolean [] a, boolean [] b) { // pad them to same length int l = a.length > b.length ? a.length : b.length; a = Arrays.copyOf(a, l); b = Arrays.copyOf(b, l); // prevent overflow, make the results bigger boolean [] r = new boolean[a.length + 1]; boolean t = false; for (int i = 0; i < l; i++) { if (a[i] && b[i]) { if (t) { r[i] = true; t = true; } else { r[i] = false; t = true; } } else if (a[i] || b[i]) { if (t) { r[i] = false; t = true; } else { r[i] = true; t = false; } } else { if (t) { r[i] = true; t = false; } else { r[i] = false; t = false; } } } // check overflow if (t) { r[l] = true; } return r; } public static void main(String[] args) { // least significant position is at 0 boolean a1[] = {true}; boolean a2[] = {false}; boolean a3[] = {true, true}; boolean a4[] = {false, false}; boolean a5[] = {true, false}; boolean a6[] = {false, true}; boolean a7[] = {true, true, true, true}; boolean a8[] = {false, true, false, true}; // keep in mind least significant value is at index 0 System.out.println(Arrays.toString(a1) + " + " + Arrays.toString(a1) + " = " + Arrays.toString(add(a1, a1))); System.out.println(Arrays.toString(a1) + " + " + Arrays.toString(a2) + " = " + Arrays.toString(add(a1, a2))); System.out.println(Arrays.toString(a3) + " + " + Arrays.toString(a3) + " = " + Arrays.toString(add(a3, a3))); System.out.println(Arrays.toString(a7) + " + " + Arrays.toString(a8) + " = " + Arrays.toString(add(a7, a8))); } }
__________________
Daniel @ [
To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
]
Language is froth on the surface of thought
Reply With Quote