XOṘ Mạchịne
Jump to navigation
Jump to search
XOṘ Mạchịne is an OISC based on the XOR operation invented by User:A. It is an open question on whether this machine can simulate every logic gate with two parameters.
Exclusive-Or reference
A | B | Result |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
The Program Execution Process
Input two bits, where the first bit represents a, and the second bit represents b. After processing the program, output whether a is larger than b. If that is true, output 1. Otherwise, output 0.
There is only 1 constant available. That is the constant 1
, which represents the bit 1.
a
represents the bit a, and b
represents the bit b.
For every two commands, e.g. ab
, a XOR b is done and is stored in a.
Example programs
a AND (NOT b)
(NOT a) AND b
abbabb
NOT (a XOR b)
aba1bb
Output 0
aa
Output 1
bbaaa1
a XOR b
abbb
a
bb
NOT a
bba1
NOT b
aa1
b
b1aa1
a AND b
b1
a NOR b
a1
C Implementation
#include <stdio.h> int main(int argc, char*argv[]) { FILE *fp=fopen(argv[1],"r"); char code[99999]; int c; for(int i=0;(c=fgetc(fp))!=EOF;i++) code[i]=c; char a,b; char s[3]; scanf("%s",&s); a=s[0]-48; b=s[1]-48; //debug for(int i=0;code[i]!='\0';i+=2) { if(code[i]=='a'&&code[i+1]=='a') a ^= a; else if(code[i]=='a'&&code[i+1]=='b') a ^= b; else if(code[i]=='a'&&code[i+1]=='1') a ^= 1; else if(code[i]=='b'&&code[i+1]=='a') b ^= a; else if(code[i]=='b'&&code[i+1]=='b') b ^= b; else if(code[i]=='b'&&code[i+1]=='1') b ^= 1; } printf("%d",a>b); return 0; }