Code:
#include <iostream>
using namespace std;
class ComparatorBasic{
public:
ComparatorBasic(int input = 0x0, int sideA = 0x0, int sideB = 0x0){
in(input);
side(sideA, sideB);
}
int out(){return _round(_in-_side);}
void in(int val){
_in = _round(val);
return;
}
void side(int a){
side(a, 0x0);
return;
}
void side(int a, int b){
if(a>=b) _side = _round(a);
else _side = _round(b);
return;
}
private:
int _in;
int _side;
int _round(int val){
if(val<0x0) return 0x0;
else if(val>0xF) return 0xF;
else return val;
}
};
class Comparator{
public:
Comparator(int val = 0x0){_value = ComparatorBasic(val).out();}
Comparator operator-(Comparator val){
return Comparator(ComparatorBasic(_value, val.value()).out());
}
Comparator operator-(int val){
return operator-(Comparator(val));
}
Comparator operator!(){
return Comparator(0xF)-_value;
}
Comparator operator+(Comparator val){
return !(!val - _value);
}
Comparator operator+(int val){
return operator+(Comparator(val));
}
void operator=(Comparator val){
_value = val.value();
return;
}
void operator=(int val){
_value = ComparatorBasic(val).out();
return;
}
void operator+=(Comparator val){
operator=(operator+(val));
return;
}
void operator+=(int val){
return operator+=(Comparator(val));
}
bool operator==(Comparator val){
return _value==val.value();
}
bool operator==(int val){
return _value==val;
}
int value(){return _value;}
void bin(){
for(int i=8; i>0; i/=2) cout << bool(_value&i);
return;
}
private:
int _value;
};
void test(Comparator A, Comparator B){
Comparator val[2][2] = {
A, !A,
B, !B,
};
Comparator target = A.value()^B.value();
bool success = false;
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
for(int k=0; k<2; k++){
Comparator result = val[i][j] - val[i^1][k];
if((result == target)||(!result == target)){
success = true;
if(!result == target) cout << "!(";
if(j) cout << '!';
val[i][0].bin();
cout << " - ";
if(k) cout << '!';
val[i^1][0].bin();
if(!result == target) cout << ')';
cout << " == ";
A.bin();
cout << " ^ ";
B.bin();
cout << endl;
}
}
}
}
if(!success){
cout << "Unable to acheive XOR for ";
A.bin();
cout << " ^ ";
B.bin();
cout << endl;
}
return;
}
int main(){
for(int i=0; i<16; i++){
for(int j=i; j<16; j++){
test(Comparator(i), Comparator(j));
}
}
return 0;
}
Code:
Testing 0000 ^ 0000...
0000 - 0000 == 0000 ^ 0000
!(!0000 - 0000) == 0000 ^ 0000
!0000 - !0000 == 0000 ^ 0000
Testing 0001 ^ 0000...
0001 - 0000 == 0001 ^ 0000
!(!0001 - 0000) == 0001 ^ 0000
Testing 0010 ^ 0000...
0010 - 0000 == 0010 ^ 0000
!(!0010 - 0000) == 0010 ^ 0000
Testing 0011 ^ 0000...
0011 - 0000 == 0011 ^ 0000
!(!0011 - 0000) == 0011 ^ 0000
Testing 0100 ^ 0000...
0100 - 0000 == 0100 ^ 0000
!(!0100 - 0000) == 0100 ^ 0000
Testing 0101 ^ 0000...
0101 - 0000 == 0101 ^ 0000
!(!0101 - 0000) == 0101 ^ 0000
Testing 0110 ^ 0000...
0110 - 0000 == 0110 ^ 0000
!(!0110 - 0000) == 0110 ^ 0000
Testing 0111 ^ 0000...
0111 - 0000 == 0111 ^ 0000
!(!0111 - 0000) == 0111 ^ 0000
Testing 1000 ^ 0000...
!(1000 - 0000) == 1000 ^ 0000
!(!1000 - 0000) == 1000 ^ 0000
Testing 1001 ^ 0000...
1001 - 0000 == 1001 ^ 0000
!(!1001 - 0000) == 1001 ^ 0000
Testing 1010 ^ 0000...
1010 - 0000 == 1010 ^ 0000
!(!1010 - 0000) == 1010 ^ 0000
Testing 1011 ^ 0000...
1011 - 0000 == 1011 ^ 0000
!(!1011 - 0000) == 1011 ^ 0000
Testing 1100 ^ 0000...
1100 - 0000 == 1100 ^ 0000
!(!1100 - 0000) == 1100 ^ 0000
Testing 1101 ^ 0000...
1101 - 0000 == 1101 ^ 0000
!(!1101 - 0000) == 1101 ^ 0000
Testing 1110 ^ 0000...
1110 - 0000 == 1110 ^ 0000
!(!1110 - 0000) == 1110 ^ 0000
Testing 1111 ^ 0000...
1111 - 0000 == 1111 ^ 0000
!(1111 - !0000) == 1111 ^ 0000
!(!1111 - 0000) == 1111 ^ 0000
Testing 0001 ^ 0001...
0001 - 0001 == 0001 ^ 0001
!0001 - !0001 == 0001 ^ 0001
Testing 0010 ^ 0001...
!(!0010 - 0001) == 0010 ^ 0001
Testing 0011 ^ 0001...
0011 - 0001 == 0011 ^ 0001
Testing 0100 ^ 0001...
!(!0100 - 0001) == 0100 ^ 0001
Testing 0101 ^ 0001...
0101 - 0001 == 0101 ^ 0001
Testing 0110 ^ 0001...
!(!0110 - 0001) == 0110 ^ 0001
Testing 0111 ^ 0001...
0111 - 0001 == 0111 ^ 0001
!0111 - 0001 - 0001 == 0111 ^ 0001
Testing 1000 ^ 0001...
!(1000 - 0001 - 0001) == 1000 ^ 0001
!(!1000 - 0001) == 1000 ^ 0001
Testing 1001 ^ 0001...
!(1001 - 0001) == 1001 ^ 0001
Testing 1010 ^ 0001...
!(!1010 - 0001) == 1010 ^ 0001
Testing 1011 ^ 0001...
1011 - 0001 == 1011 ^ 0001
Testing 1100 ^ 0001...
!(!1100 - 0001) == 1100 ^ 0001
Testing 1101 ^ 0001...
1101 - 0001 == 1101 ^ 0001
Testing 1110 ^ 0001...
!(1110 - !0001) == 1110 ^ 0001
!(!1110 - 0001) == 1110 ^ 0001
Testing 1111 ^ 0001...
1111 - 0001 == 1111 ^ 0001
!(1111 - !0001) == 1111 ^ 0001
Testing 0010 ^ 0010...
0010 - 0010 == 0010 ^ 0010
!0010 - !0010 == 0010 ^ 0010
Testing 0011 ^ 0010...
0011 - 0010 == 0011 ^ 0010
Testing 0100 ^ 0010...
!(!0100 - 0010) == 0100 ^ 0010
Testing 0101 ^ 0010...
!(!0101 - 0010) == 0101 ^ 0010
Testing 0110 ^ 0010...
0110 - 0010 == 0110 ^ 0010
Testing 0111 ^ 0010...
0111 - 0010 == 0111 ^ 0010
!0111 - 0010 - 0001 == 0111 ^ 0010
Testing 1000 ^ 0010...
!(1000 - 0010 - 0001) == 1000 ^ 0010
!(!1000 - 0010) == 1000 ^ 0010
Testing 1001 ^ 0010...
!(!1001 - 0010) == 1001 ^ 0010
Testing 1010 ^ 0010...
!(1010 - 0010) == 1010 ^ 0010
Testing 1011 ^ 0010...
1011 - 0010 == 1011 ^ 0010
Testing 1100 ^ 0010...
!(!1100 - 0010) == 1100 ^ 0010
Testing 1101 ^ 0010...
!(1101 - !0010) == 1101 ^ 0010
!(!1101 - 0010) == 1101 ^ 0010
Testing 1110 ^ 0010...
1110 - 0010 == 1110 ^ 0010
Testing 1111 ^ 0010...
1111 - 0010 == 1111 ^ 0010
!(1111 - !0010) == 1111 ^ 0010
Testing 0011 ^ 0011...
0011 - 0011 == 0011 ^ 0011
!0011 - !0011 == 0011 ^ 0011
Testing 0100 ^ 0011...
!(!0100 - 0011) == 0100 ^ 0011
Testing 0101 ^ 0011...
!0101 - 0011 - 0001 == 0101 ^ 0011
Testing 0110 ^ 0011...
!0110 - 0011 - 0001 == 0110 ^ 0011
Testing 0111 ^ 0011...
0111 - 0011 == 0111 ^ 0011
!0111 - 0011 - 0001 == 0111 ^ 0011
Testing 1000 ^ 0011...
!(1000 - 0011 - 0001) == 1000 ^ 0011
!(!1000 - 0011) == 1000 ^ 0011
Testing 1001 ^ 0011...
!(1001 - 0011 - 0001) == 1001 ^ 0011
Testing 1010 ^ 0011...
!(1010 - 0011 - 0001) == 1010 ^ 0011
Testing 1011 ^ 0011...
!(1011 - 0011) == 1011 ^ 0011
Testing 1100 ^ 0011...
!(1100 - !0011) == 1100 ^ 0011
!(!1100 - 0011) == 1100 ^ 0011
Testing 1101 ^ 0011...
!(1101 - !0011) == 1101 ^ 0011
Testing 1110 ^ 0011...
!(1110 - !0011) == 1110 ^ 0011
Testing 1111 ^ 0011...
1111 - 0011 == 1111 ^ 0011
!(1111 - !0011) == 1111 ^ 0011
Testing 0100 ^ 0100...
0100 - 0100 == 0100 ^ 0100
!0100 - !0100 == 0100 ^ 0100
Testing 0101 ^ 0100...
0101 - 0100 == 0101 ^ 0100
Testing 0110 ^ 0100...
0110 - 0100 == 0110 ^ 0100
Testing 0111 ^ 0100...
0111 - 0100 == 0111 ^ 0100
!0111 - 0100 - 0001 == 0111 ^ 0100
Testing 1000 ^ 0100...
!(1000 - 0100 - 0001) == 1000 ^ 0100
!(!1000 - 0100) == 1000 ^ 0100
Testing 1001 ^ 0100...
!(!1001 - 0100) == 1001 ^ 0100
Testing 1010 ^ 0100...
!(!1010 - 0100) == 1010 ^ 0100
Testing 1011 ^ 0100...
!(1011 - !0100) == 1011 ^ 0100
!(!1011 - 0100) == 1011 ^ 0100
Testing 1100 ^ 0100...
!(1100 - 0100) == 1100 ^ 0100
Testing 1101 ^ 0100...
1101 - 0100 == 1101 ^ 0100
Testing 1110 ^ 0100...
1110 - 0100 == 1110 ^ 0100
Testing 1111 ^ 0100...
1111 - 0100 == 1111 ^ 0100
!(1111 - !0100) == 1111 ^ 0100
Testing 0101 ^ 0101...
0101 - 0101 == 0101 ^ 0101
!0101 - !0101 == 0101 ^ 0101
Testing 0110 ^ 0101...
!0110 - 0101 - 0001 == 0110 ^ 0101
Testing 0111 ^ 0101...
0111 - 0101 == 0111 ^ 0101
!0111 - 0101 - 0001 == 0111 ^ 0101
Testing 1000 ^ 0101...
!(1000 - 0101 - 0001) == 1000 ^ 0101
!(!1000 - 0101) == 1000 ^ 0101
Testing 1001 ^ 0101...
!(1001 - 0101 - 0001) == 1001 ^ 0101
Testing 1010 ^ 0101...
!(1010 - !0101) == 1010 ^ 0101
!(!1010 - 0101) == 1010 ^ 0101
Testing 1011 ^ 0101...
!(1011 - !0101) == 1011 ^ 0101
Testing 1100 ^ 0101...
!(1100 - 0101 - 0001) == 1100 ^ 0101
Testing 1101 ^ 0101...
!(1101 - 0101) == 1101 ^ 0101
Testing 1110 ^ 0101...
!(1110 - !0101) == 1110 ^ 0101
Testing 1111 ^ 0101...
1111 - 0101 == 1111 ^ 0101
!(1111 - !0101) == 1111 ^ 0101
Testing 0110 ^ 0110...
0110 - 0110 == 0110 ^ 0110
!0110 - !0110 == 0110 ^ 0110
Testing 0111 ^ 0110...
0111 - 0110 == 0111 ^ 0110
!0111 - 0110 - 0001 == 0111 ^ 0110
Testing 1000 ^ 0110...
!(1000 - 0110 - 0001) == 1000 ^ 0110
!(!1000 - 0110) == 1000 ^ 0110
Testing 1001 ^ 0110...
!(1001 - !0110) == 1001 ^ 0110
!(!1001 - 0110) == 1001 ^ 0110
Testing 1010 ^ 0110...
!(1010 - 0110 - 0001) == 1010 ^ 0110
Testing 1011 ^ 0110...
!(1011 - !0110) == 1011 ^ 0110
Testing 1100 ^ 0110...
!(1100 - 0110 - 0001) == 1100 ^ 0110
Testing 1101 ^ 0110...
!(1101 - !0110) == 1101 ^ 0110
Testing 1110 ^ 0110...
!(1110 - 0110) == 1110 ^ 0110
Testing 1111 ^ 0110...
1111 - 0110 == 1111 ^ 0110
!(1111 - !0110) == 1111 ^ 0110
Testing 0111 ^ 0111...
0111 - 0111 == 0111 ^ 0111
!0111 - 0111 - 0001 == 0111 ^ 0111
!0111 - !0111 == 0111 ^ 0111
Testing 1000 ^ 0111...
!(1000 - 0111 - 0001) == 1000 ^ 0111
!(1000 - !0111) == 1000 ^ 0111
!(!1000 - 0111) == 1000 ^ 0111
Testing 1001 ^ 0111...
!(1001 - 0111 - 0001) == 1001 ^ 0111
!(1001 - !0111) == 1001 ^ 0111
Testing 1010 ^ 0111...
!(1010 - 0111 - 0001) == 1010 ^ 0111
!(1010 - !0111) == 1010 ^ 0111
Testing 1011 ^ 0111...
!(1011 - 0111 - 0001) == 1011 ^ 0111
!(1011 - !0111) == 1011 ^ 0111
Testing 1100 ^ 0111...
!(1100 - 0111 - 0001) == 1100 ^ 0111
!(1100 - !0111) == 1100 ^ 0111
Testing 1101 ^ 0111...
!(1101 - 0111 - 0001) == 1101 ^ 0111
!(1101 - !0111) == 1101 ^ 0111
Testing 1110 ^ 0111...
!(1110 - 0111 - 0001) == 1110 ^ 0111
!(1110 - !0111) == 1110 ^ 0111
Testing 1111 ^ 0111...
!(1111 - 0111) == 1111 ^ 0111
!(1111 - !0111) == 1111 ^ 0111
Testing 1000 ^ 1000...
1000 - 1000 == 1000 ^ 1000
1000 - !1000 - 0001 == 1000 ^ 1000
!1000 - !1000 == 1000 ^ 1000
Testing 1001 ^ 1000...
1001 - 1000 == 1001 ^ 1000
1001 - !1000 - 0001 == 1001 ^ 1000
Testing 1010 ^ 1000...
1010 - 1000 == 1010 ^ 1000
1010 - !1000 - 0001 == 1010 ^ 1000
Testing 1011 ^ 1000...
1011 - 1000 == 1011 ^ 1000
1011 - !1000 - 0001 == 1011 ^ 1000
Testing 1100 ^ 1000...
1100 - 1000 == 1100 ^ 1000
1100 - !1000 - 0001 == 1100 ^ 1000
Testing 1101 ^ 1000...
1101 - 1000 == 1101 ^ 1000
1101 - !1000 - 0001 == 1101 ^ 1000
Testing 1110 ^ 1000...
1110 - 1000 == 1110 ^ 1000
1110 - !1000 - 0001 == 1110 ^ 1000
Testing 1111 ^ 1000...
1111 - 1000 == 1111 ^ 1000
!(1111 - !1000) == 1111 ^ 1000
Testing 1001 ^ 1001...
1001 - 1001 == 1001 ^ 1001
!1001 - !1001 == 1001 ^ 1001
Testing 1010 ^ 1001...
1010 - !1001 - 0001 == 1010 ^ 1001
Testing 1011 ^ 1001...
1011 - 1001 == 1011 ^ 1001
Testing 1100 ^ 1001...
1100 - !1001 - 0001 == 1100 ^ 1001
Testing 1101 ^ 1001...
1101 - 1001 == 1101 ^ 1001
Testing 1110 ^ 1001...
!(1110 - !1001) == 1110 ^ 1001
Testing 1111 ^ 1001...
1111 - 1001 == 1111 ^ 1001
!(1111 - !1001) == 1111 ^ 1001
Testing 1010 ^ 1010...
1010 - 1010 == 1010 ^ 1010
!1010 - !1010 == 1010 ^ 1010
Testing 1011 ^ 1010...
1011 - 1010 == 1011 ^ 1010
Testing 1100 ^ 1010...
1100 - !1010 - 0001 == 1100 ^ 1010
Testing 1101 ^ 1010...
!(1101 - !1010) == 1101 ^ 1010
Testing 1110 ^ 1010...
1110 - 1010 == 1110 ^ 1010
Testing 1111 ^ 1010...
1111 - 1010 == 1111 ^ 1010
!(1111 - !1010) == 1111 ^ 1010
Testing 1011 ^ 1011...
1011 - 1011 == 1011 ^ 1011
!1011 - !1011 == 1011 ^ 1011
Testing 1100 ^ 1011...
!(1100 - !1011) == 1100 ^ 1011
Testing 1101 ^ 1011...
!(1101 - !1011) == 1101 ^ 1011
Testing 1110 ^ 1011...
!(1110 - !1011) == 1110 ^ 1011
Testing 1111 ^ 1011...
1111 - 1011 == 1111 ^ 1011
!(1111 - !1011) == 1111 ^ 1011
Testing 1100 ^ 1100...
1100 - 1100 == 1100 ^ 1100
!1100 - !1100 == 1100 ^ 1100
Testing 1101 ^ 1100...
1101 - 1100 == 1101 ^ 1100
Testing 1110 ^ 1100...
1110 - 1100 == 1110 ^ 1100
Testing 1111 ^ 1100...
1111 - 1100 == 1111 ^ 1100
!(1111 - !1100) == 1111 ^ 1100
Testing 1101 ^ 1101...
1101 - 1101 == 1101 ^ 1101
!1101 - !1101 == 1101 ^ 1101
Testing 1110 ^ 1101...
!(1110 - !1101) == 1110 ^ 1101
Testing 1111 ^ 1101...
1111 - 1101 == 1111 ^ 1101
!(1111 - !1101) == 1111 ^ 1101
Testing 1110 ^ 1110...
1110 - 1110 == 1110 ^ 1110
!1110 - !1110 == 1110 ^ 1110
Testing 1111 ^ 1110...
1111 - 1110 == 1111 ^ 1110
!(1111 - !1110) == 1111 ^ 1110
Testing 1111 ^ 1111...
1111 - 1111 == 1111 ^ 1111
!(1111 - !1111) == 1111 ^ 1111
!1111 - !1111 == 1111 ^ 1111
Code:
Testing 0000 ^ 0000...
add
sub
subiB-1
Testing 0001 ^ 0000...
add
sub
Testing 0010 ^ 0000...
add
sub
Testing 0011 ^ 0000...
add
sub
Testing 0100 ^ 0000...
add
sub
Testing 0101 ^ 0000...
add
sub
Testing 0110 ^ 0000...
add
sub
Testing 0111 ^ 0000...
add
sub
!(add+1)
Testing 1000 ^ 0000...
add
sub
!(sub-1)
Testing 1001 ^ 0000...
add
sub
Testing 1010 ^ 0000...
add
sub
Testing 1011 ^ 0000...
add
sub
Testing 1100 ^ 0000...
add
sub
Testing 1101 ^ 0000...
add
sub
Testing 1110 ^ 0000...
add
sub
Testing 1111 ^ 0000...
add
sub
!subiB
Testing 0001 ^ 0001...
sub
subiB-1
Testing 0010 ^ 0001...
add
Testing 0011 ^ 0001...
sub
Testing 0100 ^ 0001...
add
Testing 0101 ^ 0001...
sub
Testing 0110 ^ 0001...
add
!(add+1)
Testing 0111 ^ 0001...
sub
!(add+1)
Testing 1000 ^ 0001...
add
!(sub-1)
Testing 1001 ^ 0001...
sub
!(sub-1)
Testing 1010 ^ 0001...
add
Testing 1011 ^ 0001...
sub
Testing 1100 ^ 0001...
add
Testing 1101 ^ 0001...
sub
Testing 1110 ^ 0001...
add
!subiB
Testing 1111 ^ 0001...
sub
!subiB
Testing 0010 ^ 0010...
sub
subiB-1
Testing 0011 ^ 0010...
sub
Testing 0100 ^ 0010...
add
Testing 0101 ^ 0010...
add
!(add+1)
Testing 0110 ^ 0010...
sub
Testing 0111 ^ 0010...
sub
!(add+1)
Testing 1000 ^ 0010...
add
!(sub-1)
Testing 1001 ^ 0010...
add
Testing 1010 ^ 0010...
sub
!(sub-1)
Testing 1011 ^ 0010...
sub
Testing 1100 ^ 0010...
add
Testing 1101 ^ 0010...
add
!subiB
Testing 1110 ^ 0010...
sub
Testing 1111 ^ 0010...
sub
!subiB
Testing 0011 ^ 0011...
sub
subiB-1
Testing 0100 ^ 0011...
add
!(add+1)
Testing 0101 ^ 0011...
!(add+1)
Testing 0110 ^ 0011...
!(add+1)
Testing 0111 ^ 0011...
sub
!(add+1)
Testing 1000 ^ 0011...
add
!(sub-1)
Testing 1001 ^ 0011...
!(sub-1)
Testing 1010 ^ 0011...
!(sub-1)
Testing 1011 ^ 0011...
sub
!(sub-1)
Testing 1100 ^ 0011...
add
!subiB
Testing 1101 ^ 0011...
!subiB
Testing 1110 ^ 0011...
!subiB
Testing 1111 ^ 0011...
sub
!subiB
Testing 0100 ^ 0100...
sub
subiB-1
Testing 0101 ^ 0100...
sub
Testing 0110 ^ 0100...
sub
Testing 0111 ^ 0100...
sub
!(add+1)
Testing 1000 ^ 0100...
add
!(sub-1)
Testing 1001 ^ 0100...
add
Testing 1010 ^ 0100...
add
Testing 1011 ^ 0100...
add
!subiB
Testing 1100 ^ 0100...
sub
!(sub-1)
Testing 1101 ^ 0100...
sub
Testing 1110 ^ 0100...
sub
Testing 1111 ^ 0100...
sub
!subiB
Testing 0101 ^ 0101...
sub
subiB-1
Testing 0110 ^ 0101...
!(add+1)
Testing 0111 ^ 0101...
sub
!(add+1)
Testing 1000 ^ 0101...
add
!(sub-1)
Testing 1001 ^ 0101...
!(sub-1)
Testing 1010 ^ 0101...
add
!subiB
Testing 1011 ^ 0101...
!subiB
Testing 1100 ^ 0101...
!(sub-1)
Testing 1101 ^ 0101...
sub
!(sub-1)
Testing 1110 ^ 0101...
!subiB
Testing 1111 ^ 0101...
sub
!subiB
Testing 0110 ^ 0110...
sub
subiB-1
Testing 0111 ^ 0110...
sub
!(add+1)
Testing 1000 ^ 0110...
add
!(sub-1)
Testing 1001 ^ 0110...
add
!subiB
Testing 1010 ^ 0110...
!(sub-1)
Testing 1011 ^ 0110...
!subiB
Testing 1100 ^ 0110...
!(sub-1)
Testing 1101 ^ 0110...
!subiB
Testing 1110 ^ 0110...
sub
!(sub-1)
Testing 1111 ^ 0110...
sub
!subiB
Testing 0111 ^ 0111...
sub
!(add+1)
subiB-1
Testing 1000 ^ 0111...
add
!subiB
!(sub-1)
Testing 1001 ^ 0111...
!subiB
!(sub-1)
Testing 1010 ^ 0111...
!subiB
!(sub-1)
Testing 1011 ^ 0111...
!subiB
!(sub-1)
Testing 1100 ^ 0111...
!subiB
!(sub-1)
Testing 1101 ^ 0111...
!subiB
!(sub-1)
Testing 1110 ^ 0111...
!subiB
!(sub-1)
Testing 1111 ^ 0111...
sub
!subiB
!(sub-1)
Testing 1000 ^ 1000...
sub
!(add+1)
subiB-1
Testing 1001 ^ 1000...
sub
subiB-1
Testing 1010 ^ 1000...
sub
subiB-1
Testing 1011 ^ 1000...
sub
subiB-1
Testing 1100 ^ 1000...
sub
subiB-1
Testing 1101 ^ 1000...
sub
subiB-1
Testing 1110 ^ 1000...
sub
subiB-1
Testing 1111 ^ 1000...
sub
!subiB
subiB-1
Testing 1001 ^ 1001...
sub
!(add+1)
Testing 1010 ^ 1001...
subiB-1
Testing 1011 ^ 1001...
sub
Testing 1100 ^ 1001...
subiB-1
Testing 1101 ^ 1001...
sub
Testing 1110 ^ 1001...
!subiB
subiB-1
Testing 1111 ^ 1001...
sub
!subiB
Testing 1010 ^ 1010...
sub
!(add+1)
Testing 1011 ^ 1010...
sub
Testing 1100 ^ 1010...
subiB-1
Testing 1101 ^ 1010...
!subiB
subiB-1
Testing 1110 ^ 1010...
sub
Testing 1111 ^ 1010...
sub
!subiB
Testing 1011 ^ 1011...
sub
!(add+1)
Testing 1100 ^ 1011...
!subiB
subiB-1
Testing 1101 ^ 1011...
!subiB
Testing 1110 ^ 1011...
!subiB
Testing 1111 ^ 1011...
sub
!subiB
Testing 1100 ^ 1100...
sub
!(add+1)
Testing 1101 ^ 1100...
sub
Testing 1110 ^ 1100...
sub
Testing 1111 ^ 1100...
sub
!subiB
Testing 1101 ^ 1101...
sub
!(add+1)
Testing 1110 ^ 1101...
!subiB
Testing 1111 ^ 1101...
sub
!subiB
Testing 1110 ^ 1110...
sub
!(add+1)
Testing 1111 ^ 1110...
sub
!subiB
Testing 1111 ^ 1111...
sub
!subiB
!(add+1)
Necessary operations:
add
sub
!subiB
!(add+1)
!(sub-1)
subiB-1