qxLib
data.h
Go to the documentation of this file.
1 /**
2 
3  @file data.h
4  @author Khrapov
5  @date 11.08.2025
6  @copyright (c) Nick Khrapov, 2025. All right reserved.
7 
8 **/
9 #pragma once
10 
11 #include <qx/math/common.h>
12 #include <qx/math/units/base.h>
13 
14 #include <algorithm>
15 #include <limits>
16 
17 namespace qx::units
18 {
19 
20 enum class data
21 {
22  // binary prefixes (not SI)
23  bits = 0, // 2^0 bits (1 bit)
24  nibbles = 2, // 2^1 bits (4 bits)
25  bytes = 3, // 2^3 bits (8 bits)
26  kibibytes = 13, // 2^13 bits (1024 bytes)
27  mebibytes = 23, // 2^23 bits (1024 kibibytes)
28  gibibytes = 33, // 2^33 bits (1024 mebibytes)
29  tebibytes = 43, // 2^43 bits (1024 gibibytes)
30  pebibytes = 53, // 2^53 bits (1024 tebibytes)
31 
32  _first_si,
33 
34  // multiplicative prefixes (SI)
35  kilobytes = _first_si + 3, // 10^3 bytes
36  megabytes = _first_si + 6, // 10^6 bytes (1000 kilobytes)
37  gigabytes = _first_si + 9, // 10^9 bytes (1000 megabytes)
38  terabytes = _first_si + 12, // 10^12 bytes (1000 gigabytes)
39  petabytes = _first_si + 15, // 10^15 bytes (1000 terabytes)
40 };
41 
42 } // namespace qx::units
43 
44 #include <qx/math/units/data.inl>