fork(3) download
  1. #include <stdio.h>
  2.  
  3. unsigned compress_Harold(unsigned x, unsigned m)
  4. {
  5. unsigned r, s, b; // Result, shift, mask bit.
  6.  
  7. r = 0;
  8. s = 0;
  9. do {
  10. b = m & 1;
  11. r = r | ((x & b) << s);
  12. s = s + b;
  13. x = x >> 1;
  14. m = m >> 1;
  15. } while (m != 0);
  16. return r;
  17. }
  18.  
  19. unsigned compress(unsigned x)
  20. {
  21. int mask = 0xA9;
  22. int mask1 = mask & 0xF0;
  23. int mask2 = mask & 0x0F;
  24. return (((x & mask1)*0x03000000 >> 28) & 0x0C) | ((x & mask2)*0x50000000 >> 30);
  25. }
  26.  
  27. int main()
  28. {
  29. unsigned i;
  30. for (i = 0; i < 256; ++i)
  31. if (compress_Harold(i, 0xA9) != compress(i))
  32. printf("Error at x = %d\n", i);
  33. printf("Finished\n");
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 2052KB
stdin
Standard input is empty
stdout
Finished