Системы счисления
Добавлено: Ср апр 08, 2015 2:50 pm
Здравствуйте.
Выполняя одну из задач по бинарной арифметике в InTouch столкнулся с проблемой.
Я пытаюсь написать в коде приложения CRC16 - прямым методом. Путем деления на полином.
Естественно, тот факт, что в InTouch отсутствуют операции логического битового сдвига, а также то, что нет хорошего функционала, который можно задействовать при переводе чисел из одной в другую систему счисления, жизнь не облегчает.
Задача конкретная в следующем. В тег integer инициализируется слово (16 бит - до 32767). К нему необходимо дописать 16 нулей, чтобы нормально поделить. И вот здесь встает проблема. По идее 32битная величина, с которой я хочу работать имеет право на существование в integer, но как ее можно занести туда, если InTouch работает только в десятичной системе?
Я думал, что можно было бы умножить 16ричное число на 10000, что дало б желаемый результат. Но опять же - арифметика только десятичная.
Вторая попытка была - перевод слова в строку StringFromIntg(Word,2/16), прибавление 16 или 4 нулей (в зависимости от системы счисления, в которой считываем). Но после этого неизвестно, как перевести набор двоичных (или шестнадцатеричных) символов в число, ведь в интаче StringToIntg переводит только в десятичную систему.
Подскажите, пожалуйста, какие выходы вообще можно из такой ситуации придумать.
Выполняя одну из задач по бинарной арифметике в InTouch столкнулся с проблемой.
Я пытаюсь написать в коде приложения CRC16 - прямым методом. Путем деления на полином.
Естественно, тот факт, что в InTouch отсутствуют операции логического битового сдвига, а также то, что нет хорошего функционала, который можно задействовать при переводе чисел из одной в другую систему счисления, жизнь не облегчает.
Задача конкретная в следующем. В тег integer инициализируется слово (16 бит - до 32767). К нему необходимо дописать 16 нулей, чтобы нормально поделить. И вот здесь встает проблема. По идее 32битная величина, с которой я хочу работать имеет право на существование в integer, но как ее можно занести туда, если InTouch работает только в десятичной системе?
Я думал, что можно было бы умножить 16ричное число на 10000, что дало б желаемый результат. Но опять же - арифметика только десятичная.
Вторая попытка была - перевод слова в строку StringFromIntg(Word,2/16), прибавление 16 или 4 нулей (в зависимости от системы счисления, в которой считываем). Но после этого неизвестно, как перевести набор двоичных (или шестнадцатеричных) символов в число, ведь в интаче StringToIntg переводит только в десятичную систему.
Подскажите, пожалуйста, какие выходы вообще можно из такой ситуации придумать.