2026-08-27 13:13:08 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| CTZ.mqh |
|
| | | //| Copyright 2026, Niquel Mendoza |
|
| | | //| https://www.mql5.com |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, Niquel Mendoza"
|
| | | #property link "https://www.mql5.com"
|
| | | #property strict
|
| | |
|
| | | #ifndef TSNTABES_SRC_BITS_CTZ_CTZ_MQH
|
| | | #define TSNTABES_SRC_BITS_CTZ_CTZ_MQH
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | namespace TSN
|
| | | {
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | // Para la busquieda
|
| | | //--- obtiene el nidice para la tabla
|
| | | #define TSNTABLES_CTZ_64_CONSTANT 571740426102773010ULL
|
| | | #define TSNTABLES_CTZ_64_INDEX(flag_real) ((flag_real * TSNTABLES_CTZ_64_CONSTANT) >> 58)
|
| | |
|
| | | //---- finales
|
| | | // obtiene el byte
|
2026-08-27 14:03:03 -05:00 | | | #define TSNTABLES_CTZ_64_GET_BYTE(flag_real) (g_tsntables_table_ctz_i64[TSNTABLES_CTZ_64_INDEX(flag_real)]>>3)
|
2026-08-27 13:13:08 -05:00 | | | // obtiene el bit
|
| | | #define TSNTABLES_CTZ_64_GET_BIT(flag_real) (g_tsntables_table_ctz_i64[TSNTABLES_CTZ_64_INDEX(flag_real)])
|
| | |
|
| | | //--- utilidades
|
| | | // aislar el menos significatvio
|
| | | #define TSNTABLES_BIT_DEJAR_SOLO_MINUS_SIG_BYTE(mask) (mask & (~mask + 1ULL))
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| Tablas |
|
| | | //+------------------------------------------------------------------+
|
| | | //--- 64
|
| | | const char g_tsntables_table_ctz_i64[64] =
|
| | | {
|
| | | 63,
|
| | | 0,
|
| | | 47,
|
| | | 1,
|
| | | 56,
|
| | | 48,
|
| | | 27,
|
| | | 2,
|
| | | 60,
|
| | | 57,
|
| | | 49,
|
| | | 41,
|
| | | 37,
|
| | | 28,
|
| | | 16,
|
| | | 3,
|
| | | 61,
|
| | | 54,
|
| | | 58,
|
| | | 35,
|
| | | 52,
|
| | | 50,
|
| | | 42,
|
| | | 21,
|
| | | 44,
|
| | | 38,
|
| | | 32,
|
| | | 29,
|
| | | 23,
|
| | | 17,
|
| | | 11,
|
| | | 4,
|
| | | 62,
|
| | | 46,
|
| | | 55,
|
| | | 26,
|
| | | 59,
|
| | | 40,
|
| | | 36,
|
| | | 15,
|
| | | 53,
|
| | | 34,
|
| | | 51,
|
| | | 20,
|
| | | 43,
|
| | | 31,
|
| | | 22,
|
| | | 10,
|
| | | 45,
|
| | | 25,
|
| | | 39,
|
| | | 14,
|
| | | 33,
|
| | | 19,
|
| | | 30,
|
| | | 9,
|
| | | 24,
|
| | | 13,
|
| | | 18,
|
| | | 8,
|
| | | 12,
|
| | | 7,
|
| | | 6,
|
| | | 5
|
| | | };
|
| | |
|
| | | //--- 8
|
| | | const uchar g_tsntables_table_ctz_i8[256] =
|
| | | {
|
| | | 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
| | | 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
| | | };
|
| | | }
|
| | | #endif // TSNTABES_SRC_BITS_CTZ_MAIN_MQH
|