ionBitwise.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #include "ionTypes.h"
5 
6 
7 namespace ion
8 {
9 
12  class Bitwise
13  {
14 
15  public:
16 
17  static uint BitsToByte(vector<uint> const & bits)
18  {
19  uint Byte = 0;
20  for (auto bit : bits)
21  {
22  Byte |= 1 << bit;
23  }
24 
25  return Byte;
26  }
27 
28  static vector<uint> ByteToBits(uint const Byte)
29  {
30  vector<uint> Bits;
31 
32  for (uint i = 0; i < 8; ++i)
33  {
34  if (Byte & (1 << i))
35  {
36  Bits.push_back(i);
37  }
38  }
39 
40  return Bits;
41  }
42 
43  static uint BitCount(uint i)
44  {
45  i = i - ((i >> 1) & 0x55555555);
46  i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
47  return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
48  }
49 
50  };
51 
52 }
static vector< uint > ByteToBits(uint const Byte)
Definition: ionBitwise.h:28
unsigned int uint
Definition: ionTypes.h:99
Definition: CCatmullRomAdvancedSplineInterpolator.h:7
static uint BitCount(uint i)
Definition: ionBitwise.h:43
Defines typedefs for integer and floating point types.
static uint BitsToByte(vector< uint > const &bits)
Definition: ionBitwise.h:17
Tools for bitwise operations.
Definition: ionBitwise.h:12