Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- long toBinary (int num)
- {
- int bin = 0;
- int place = 1;
- for (; num != 0;)
- {
- int itr = num;
- int rem = itr % 2;
- num /= 2;
- itr = num;
- bin += (rem * place);
- place *= 10;
- }
- return bin;
- }
- long rightShift (long num)
- {
- return (num - (num % 10))/10;
- }
- int lenInt (long num)
- {
- int ret = 0;
- while (num)
- {
- num = rightShift(num);
- ret++;
- }
- return ret;
- }
- int XOR (int a, int b)
- {
- return ((a == 1 && b == 1) || (a == 0 && b == 0))?0:1;
- }
- long getXOR(long a, long b)
- {
- int lenA = lenInt(a);
- int lenB = lenInt(b);
- int len = ((lenA>lenB)?lenA:lenB);
- long sum = 0;
- int power = 1;
- for (int i = 0; i < len ; i++)
- {
- printf("\n%ld XOR %ld = %d\n", a%10, b%10, XOR(a%10, b%10));
- sum += XOR(a%10, b%10)*power;
- power *= 10;
- a = rightShift(a);
- b = rightShift(b);
- }
- return sum;
- }
- int toDec (long a)
- {
- int len = lenInt(a);
- long power = 1;
- int dec = 0;
- for (int i = 0; i < len; i++)
- {
- dec += a%10 * power;
- power *= 2;
- a = rightShift(a);
- }
- return dec;
- }
- int main()
- {
- long a = toBinary(1);
- long b = toBinary(3);
- printf("\n%d", toDec(getXOR(a, b)));
- }
- Itna basic
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement