#include #include #define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c" #define PRINTF_BYTE_TO_BINARY_INT8(i) \ (int)((((i) >> 7) & 1ull) + '0'), (int)((((i) >> 6) & 1ull) + '0'), \ (int)((((i) >> 5) & 1ull) + '0'), (int)((((i) >> 4) & 1ull) + '0'), \ (int)((((i) >> 3) & 1ull) + '0'), (int)((((i) >> 2) & 1ull) + '0'), \ (int)((((i) >> 1) & 1ull) + '0'), (int)((((i)) & 1ull) + '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 --- */ __global__ void test() { auto last_known_point = 10981552822ULL, val = 10960094149ULL; auto x = last_known_point - val; printf("last_known_point =%llu, val = %llu " PRINTF_BINARY_PATTERN_INT64 "\n", last_known_point, val, PRINTF_BYTE_TO_BINARY_INT64(last_known_point - val)); } int main() { std::cout << (PRINTF_BINARY_PATTERN_INT64) << std::endl; test<<<1, 1>>>(); cudaDeviceSynchronize(); }