bitops-bits-in-byte.js 571 B

123456789101112131415161718192021222324252627282930
  1. // Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com)
  2. var result = 0;
  3. // 1 op = 2 assigns, 16 compare/branches, 8 ANDs, (0-8) ADDs, 8 SHLs
  4. // O(n)
  5. function bitsinbyte(b) {
  6. var m = 1, c = 0;
  7. while(m<0x100) {
  8. if(b & m) c++;
  9. m <<= 1;
  10. }
  11. return c;
  12. }
  13. function TimeFunc(func) {
  14. var x, y, t;
  15. var sum = 0;
  16. for(var x=0; x<350; x++)
  17. for(var y=0; y<256; y++) sum += func(y);
  18. return sum;
  19. }
  20. result = TimeFunc(bitsinbyte);
  21. var expected = 358400;
  22. if (result != expected)
  23. throw "ERROR: bad result: expected " + expected + " but got " + result;