/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
uint16_t zMax(uint16_t A, uint16_t B)
{
uint16_t x[16], z[15],A_and_Bbar[16],AaBb,AbaB,Abar_and_B[16],XNOR,agb,adad[2];
adad[0]=B;
adad[1]=A;
XNOR= ~(A^B);
//تبدیل به فرم باینری در قالب یک ارایه
uint16_t tmp=XNOR;
x[0]=tmp%2;
tmp=XNOR>>1;
x[1]=tmp%2;
tmp=XNOR>>2;
x[2]=tmp%2;
tmp=XNOR>>3;
x[3]=tmp%2;
tmp=XNOR>>4;
x[4]=tmp%2;
tmp=XNOR>>5;
x[5]=tmp%2;
tmp=XNOR>>6;
x[6]=tmp%2;
tmp=XNOR>>7;
x[7]=tmp%2;
tmp=XNOR>>8;
x[8]=tmp%2;
tmp=XNOR>>9;
x[9]=tmp%2;
tmp=XNOR>>10;
x[10]=tmp%2;
tmp=XNOR>>11;
x[11]=tmp%2;
tmp=XNOR>>12;
x[12]=tmp%2;
tmp=XNOR>>13;
x[13]=tmp%2;
tmp=XNOR>>14;
x[14]=tmp%2;
tmp=XNOR>>15;
x[15]=tmp%2;
z[0]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6] & x[5] & x[4] & x[3] & x[2] & x[1];
z[1]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6] & x[5] & x[4] & x[3] & x[2];
z[2]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6] & x[5] & x[4] & x[3];
z[3]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6] & x[5] & x[4];
z[4]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6] & x[5];
z[5]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7] & x[6];
z[6]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8] & x[7];
z[7]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9] & x[8];
z[8]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10] & x[9];
z[9]=x[15] & x[14] & x[13] & x[12] & x[11] & x[10];
z[10]=x[15] & x[14] & x[13] & x[12] & x[11];
z[11]=x[15] & x[14] & x[13] & x[12];
z[12]=x[15] & x[14] & x[13];
z[13]=x[15] & x[14];
z[14]=x[15];
// A_and_Bbar
AaBb =A & (~B);
//تبدیل به فرم باینری در قالب یک ارایه
A_and_Bbar[0]=tmp%2;
tmp=AaBb>>1;
A_and_Bbar[1]=tmp%2;
tmp=AaBb>>2;
A_and_Bbar[2]=tmp%2;
tmp=AaBb>>3;
A_and_Bbar[3]=tmp%2;
tmp=AaBb>>4;
A_and_Bbar[4]=tmp%2;
tmp=AaBb>>5;
A_and_Bbar[5]=tmp%2;
tmp=AaBb>>6;
A_and_Bbar[6]=tmp%2;
tmp=AaBb>>7;
A_and_Bbar[7]=tmp%2;
tmp=AaBb>>8;
A_and_Bbar[8]=tmp%2;
tmp=AaBb>>9;
A_and_Bbar[9]=tmp%2;
tmp=AaBb>>10;
A_and_Bbar[10]=tmp%2;
tmp=AaBb>>11;
A_and_Bbar[11]=tmp%2;
tmp=AaBb>>12;
A_and_Bbar[12]=tmp%2;
tmp=AaBb>>13;
A_and_Bbar[13]=tmp%2;
tmp=AaBb>>14;
A_and_Bbar[14]=tmp%2;
tmp=AaBb>>15;
A_and_Bbar[15]=tmp%2;
AbaB=(~A)&B;
tmp=AbaB;
Abar_and_B[0]=tmp%2;
tmp=AbaB>>1;
Abar_and_B[1]=tmp%2;
tmp=AbaB>>2;
Abar_and_B[2]=tmp%2;
tmp=AbaB>>3;
Abar_and_B[3]=tmp%2;
tmp=AbaB>>4;
Abar_and_B[4]=tmp%2;
tmp=AbaB>>5;
Abar_and_B[5]=tmp%2;
tmp=AbaB>>6;
Abar_and_B[6]=tmp%2;
tmp=AbaB>>7;
Abar_and_B[7]=tmp%2;
tmp=AbaB>>8;
Abar_and_B[8]=tmp%2;
tmp=AbaB>>9;
Abar_and_B[9]=tmp%2;
tmp=AbaB>>10;
Abar_and_B[10]=tmp%2;
tmp=AbaB>>11;
Abar_and_B[11]=tmp%2;
tmp=AbaB>>12;
Abar_and_B[12]=tmp%2;
tmp=AbaB>>13;
Abar_and_B[13]=tmp%2;
tmp=AbaB>>14;
Abar_and_B[14]=tmp%2;
tmp=AbaB>>15;
Abar_and_B[15]=tmp%2;
//تابع منطقی a>b
agb=A_and_Bbar[15] | (z[14]& A_and_Bbar[14]) | (z[13]& A_and_Bbar[13]) | (z[12]& A_and_Bbar[12]) | (z[11]& A_and_Bbar[11]) | (z[10]& A_and_Bbar[10]) | (z[9]& A_and_Bbar[9]) | (z[8]& A_and_Bbar[8]) | (z[7]& A_and_Bbar[7]) | (z[6]& A_and_Bbar[6]) | (z[5]& A_and_Bbar[5]) | (z[4]& A_and_Bbar[4]) | (z[3]& A_and_Bbar[3]) | (z[2]& A_and_Bbar[2]) | (z[1]& A_and_Bbar[1]) | (z[0]& A_and_Bbar[0]) ;
//اگر نتیجه تابع منطقی یک باشد عدد بزرگتر آ و اگر صفر باشد عدد بزرگتر ب است
return adad[agb]; ;
}
uint16_t Max(uint16_t A,uint16_t B)
{
return (A>B) ? A:B;
}
int main(void)
{
puts("!!!Hello World!!!\r\n"); /* prints !!!Hello World!!! */
uint16_t breakc = 0;
for(int A=0;A<0xFFF;A++)
{
for(int B=0;B<0xFFF;B++)
{
if(zMax(A,B)!=Max(A,B))
{
printf("A=%i,B=%i\tMax=%i\r\n",A,B,zMax(A,B));
if(breakc++>=4)
{
printf("\r\n END.");
return 0;
}
}
}
}
printf("\r\n END.");
return 0;
}