Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
BitArithmetic.cs
Go to the documentation of this file.
2
3internal static class BitArithmetic
4{
5 internal static int CountBits(int v)
6 {
7 return CountBits((uint)v);
8 }
9
10 internal static int CountBits(uint v)
11 {
12 v -= (v >> 1) & 0x55555555;
13 v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
14 return (int)(((v + (v >> 4)) & 0xF0F0F0F) * 16843009) >> 24;
15 }
16
17 internal static int CountBits(ulong v)
18 {
19 v -= (v >> 1) & 0x5555555555555555L;
20 v = (v & 0x3333333333333333L) + ((v >> 2) & 0x3333333333333333L);
21 return (int)(((v + (v >> 4)) & 0xF0F0F0F0F0F0F0FL) * 72340172838076673L >> 56);
22 }
23
24 internal static uint Align(uint position, uint alignment)
25 {
26 uint num = position & ~(alignment - 1);
27 if (num == position)
28 {
29 return num;
30 }
31 return num + alignment;
32 }
33
34 internal static int Align(int position, int alignment)
35 {
36 int num = position & ~(alignment - 1);
37 if (num == position)
38 {
39 return num;
40 }
41 return num + alignment;
42 }
43}
static int Align(int position, int alignment)
static uint Align(uint position, uint alignment)