Advertisement
Rydymth

XOR_WhatTheFuck

Nov 18th, 2023
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. long toBinary (int num)
  4. {
  5. int bin = 0;
  6. int place = 1;
  7. for (; num != 0;)
  8. {
  9. int itr = num;
  10. int rem = itr % 2;
  11. num /= 2;
  12. itr = num;
  13. bin += (rem * place);
  14. place *= 10;
  15. }
  16. return bin;
  17. }
  18.  
  19. long rightShift (long num)
  20. {
  21. return (num - (num % 10))/10;
  22. }
  23.  
  24. int lenInt (long num)
  25. {
  26. int ret = 0;
  27. while (num)
  28. {
  29. num = rightShift(num);
  30. ret++;
  31. }
  32. return ret;
  33. }
  34.  
  35. int XOR (int a, int b)
  36. {
  37. return ((a == 1 && b == 1) || (a == 0 && b == 0))?0:1;
  38. }
  39.  
  40. long getXOR(long a, long b)
  41. {
  42. int lenA = lenInt(a);
  43. int lenB = lenInt(b);
  44. int len = ((lenA>lenB)?lenA:lenB);
  45. long sum = 0;
  46. int power = 1;
  47. for (int i = 0; i < len ; i++)
  48. {
  49. printf("\n%ld XOR %ld = %d\n", a%10, b%10, XOR(a%10, b%10));
  50. sum += XOR(a%10, b%10)*power;
  51. power *= 10;
  52. a = rightShift(a);
  53. b = rightShift(b);
  54. }
  55. return sum;
  56. }
  57.  
  58. int toDec (long a)
  59. {
  60. int len = lenInt(a);
  61. long power = 1;
  62. int dec = 0;
  63. for (int i = 0; i < len; i++)
  64. {
  65. dec += a%10 * power;
  66. power *= 2;
  67. a = rightShift(a);
  68. }
  69. return dec;
  70. }
  71.  
  72.  
  73. int main()
  74. {
  75. long a = toBinary(1);
  76. long b = toBinary(3);
  77. printf("\n%d", toDec(getXOR(a, b)));
  78. }
  79.  
  80. Itna basic
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement