Copyright © 2010 Promsite. All Rights Reserved.
табл. 1 Пробег от 0 км. до 9 км.
табл. 2 Пробег от 10 км. до 19 км.
Смотрим табл.1 и думаем. Проехали от 0 км. до 9 км. Видим, что коде меняется только младшие 4-е разряда левого крайнего байта (выделено красным). Проехали от нуля 1 км., от F отнимаем 1, получаем Е. При пробеге следующего км. от Е отнимается очередная единица и т.д. и так до 9 км. с кодом F6. Отсюда делаем вывод, что за единицы километров отвечает именно эта часть кода. Обратим внимание, что символы 1, 2, 3, 4, 5 не используются. Самый младший символ 6. У разработчиков кода получилась своеобразная десятично-шестнадцатеричная система счисления.
Теперь плавно переходим к десяткам км. табл. 2.
Смотрим табл. 2. При смене пробега от 9 км. на 10 км. меняются старшие разряды байта на значение Е, при этом младшие разряды становятся F. И код становится равным EF. Ну и так далее до 19 км когда код станет равным E6. При появление пробега 20 км опять поменяется старший полубайт и станет равным D. И так по 99 км. включительно. Отсюда можно сделать вывод, что за пробег в десятки км. отвечает старший полубайт старшего слова (левый крайний байт).
Как вы думаете каким будет самое последнее число в десятках километрах в шестнадцатеричном виде? Я думаю 66. А теперь обещаннное, как мысленно хорить число без пользования калькулятором и перевода в битовое представление?
Общая формула: Операнд1 XOR Операнд2 = Результат. Здесь Операнд1 - наше число, XOR - название операции, операнд2 - число на которое "хорим", Результат - то, что получим. Как правило в качестве Операнда2 будет использоваться число состоящее из символов F, например F, FF, FFFF, FFFFFF. У функции XOR есть замечательное свойство: результатом ее выполнения является дополнение до 2-го операнда. Немного непонятно? Сейчас поясню на примере:
2 XOR F = ? Если перевести F из шестнадцатеричного представления в десятичное, то получим число 15, т.е. 0хF = 15 (здесь 0х не умножение 0 на F, а просто указание на то что за символами 0х следует число в шестнадцатеричном виде. Для десятичного представления никаких префиксов не используется). В нашем случае дополнением числа 2 будет 15 - 2 = 13. В шестнадцатеричном виде это будет число D.
Возьмем из табл.2 строку с пробегом 17 км E8. E8 XOR FF = ?. Смотрим, дополнением до 15 числа Е будет: F - E = 15 - 14 = 1, дополнением до 15 числа 8 будет: F - 8 = 15 - 8 = 7. Т.е. собираем все вместе и получаем 17. Теперь мы знаем, что Е8 XOR FF = 17. Число 17 ничего не напоминает?