diff options
Diffstat (limited to 'expt_0707.cpp')
| -rw-r--r-- | expt_0707.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/expt_0707.cpp b/expt_0707.cpp new file mode 100644 index 0000000..b3e51ff --- /dev/null +++ b/expt_0707.cpp @@ -0,0 +1,40 @@ + +#include <cstdio> +#include <iostream> +#include <limits> +#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c" +#define PRINTF_BYTE_TO_BINARY_INT8(i) \ + (((i)&0x80ull) ? '1' : '0'), (((i)&0x40ull) ? '1' : '0'), \ + (((i)&0x20ull) ? '1' : '0'), (((i)&0x10ull) ? '1' : '0'), \ + (((i)&0x08ull) ? '1' : '0'), (((i)&0x04ull) ? '1' : '0'), \ + (((i)&0x02ull) ? '1' : '0'), (((i)&0x01ull) ? '1' : '0') + +#define PRINTF_BINARY_PATTERN_INT16 \ + PRINTF_BINARY_PATTERN_INT8 PRINTF_BINARY_PATTERN_INT8 +#define PRINTF_BYTE_TO_BINARY_INT16(i) \ + PRINTF_BYTE_TO_BINARY_INT8((i) >> 8), PRINTF_BYTE_TO_BINARY_INT8(i) +#define PRINTF_BINARY_PATTERN_INT32 \ + PRINTF_BINARY_PATTERN_INT16 PRINTF_BINARY_PATTERN_INT16 +#define PRINTF_BYTE_TO_BINARY_INT32(i) \ + PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i) +#define PRINTF_BINARY_PATTERN_INT64 \ + PRINTF_BINARY_PATTERN_INT32 PRINTF_BINARY_PATTERN_INT32 +#define PRINTF_BYTE_TO_BINARY_INT64(i) \ + PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i) +/* --- end macros --- */ + +template <typename T> void print_type_max(T _) { + std::cout << typeid(T).name() << "" +} + +int main() { + std::cout << (PRINTF_BINARY_PATTERN_INT64) << std::endl; + + auto last_known_point = 10981552822ULL, val = 10960094149ULL; + + printf("last_known_point = %llu, val = %llu\nlast_known_point - val " + "= " PRINTF_BINARY_PATTERN_INT64 "\n", + last_known_point, val, + PRINTF_BYTE_TO_BINARY_INT64(last_known_point - val)); + std::cout << std::numeric_limits<size_t>::max() << std::endl; +}
\ No newline at end of file |
