Подпишись на канал фаундера и разработчика экосистемы tonpie
Каков наилучший способ понять передачу & и кода операции в TEP?
-
Tags were calculated via tlbc as follows (request_flag is equal to 0x7fffffff and response flag is equal to 0x80000000): crc32('transfer query_id:uint64 new_owner:MsgAddress response_destination:MsgAddress custom_payload:Maybe ^Cell forward_amount:VarUInteger 16 forward_payload:Either Cell ^Cell = InternalMsgBody') = 0x5fcc3d14 & 0x7fffffff = 0x5fcc3d14 crc32('ownership_assigned query_id:uint64 prev_owner:MsgAddress forward_payload:Either Cell ^Cell = InternalMsgBody') = 0x85138d91 & 0x7fffffff = 0x05138d91 more....
Мой вопрос в том, почему первый и второй получили разный результат:
- 0x5fcc3d14 & 0x7fffffff => 0x5fcc3d14 🟢 * 0x85138d91 & 0x7fffffff => 0x05138d91 �
-
Шестнадцатеричная цифра
0xF
имеет двоичное представление "1111". Все, что имеет "&" с ней, останется прежним.Шестнадцатеричная цифра
0x7
имеет такое двоичное представление: "0111". Все, что содержит "&" с ней, потеряет первый бит, или первый бит станет нулевым.В вашем первом примере "0x5... & 0x7..." остается "0x5...", потому что "5" имеет двоичное представление "0101", а первый бит уже равен
0
.В вашем втором примере "0x8... & 0x7..." изменено на "0x0...", потому что "8" имеет двоичное представление "1000", и после установки первого бита на "0" у нас будет
0000
или шестнадцатеричная цифра0x0
.