Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а такой еще вопрос... а можно каким-нибудь способом 12 битный int получить через union ? ... не суть через как )))
ЗЫ: в идеале 9-15 битный int , знак выделить не проблема, т.е. можно unsigned int (в последних билдах MQL научился unsigned int , можно вместо uint использовать )
в общем опять не разобрался...хелп!хелп! )))
прикинул, что выделить часть необходимых битов могу так:
где теперь будет находиться старший бит, чтобы знак числа определить... не знаю, т.е. в идеале это должна быть функция
в идеале вообще нужен шаблон, чтобы такие структуры использовать:
в общем опять не разобрался...хелп!хелп! )))
прикинул, что выделить часть необходимых битов могу так:
где теперь будет находиться старший бит, чтобы знак числа определить... не знаю, т.е. в идеале это должна быть функция
в идеале вообще нужен шаблон, чтобы такие структуры использовать:
Смотри. Маска - это значимая часть числа, то есть, для int, надо на бит дальше смещать, т.к. старший бит у тебя знак означает. <<pos - это лажа. Как у тебя, ты по этой маске старшие биты int брать будешь, а тебе нужны младшие))).
Для знаковых целых, надо отдельно значимую часть брать, отдельно старший бит (знак), смещать старший бит на нужную позицию и побитовым ИЛИ совмещать. Пример для int-> 4 бита
int mean4=0xFFFFFFFF>>29
int sign16=1<<31
int sign4=1<<3
Теперь int->int4 смотри за руками:
1. Имеем int val
2. int sign=(val&sign16)>>28
Здесь мы взяли знак нашего числа и сместили в нужную нам позицию (старший бит в int4)
3. mean3val=val&mean4
Здесь мы через маску получили три младших бита (значимая часть), все остальное обрезалось.
4. int out=sign|mean3val
А тут мы совместили знак со значимой частью. Теперь мы имеем 4 младших бита, в которых бит 4 - это знак, а биты 1..3 значимая часть, все биты старше 4-х имеют значение 0. Диапазон значений -8..7 И да, если на вход подать 8, то 7 не будет, а будет 0, так как все просто обрежется.
Проще сдвинуть на нужное количество битов, а за маску использовать 1. По крайней мере наглядней.
Определение знака: (a>>31)&1 - если 1, то минус, если 0, то плюс.
выделить из int значимые биты я могу решением в "лоб", а вот сделать универсальное решение... да не могу! (((
высока вероятность, что не объяснил как и куда хочу
есть 4 байта int / uint, и есть мой набор данных, которые хочу запаковать распаковать в оптимизаторе
предположим, что у меня получилось так запаковать:
какие типы мне нужны int_XXX я еще не прикидывал
но хочу иметь удобство использования в виде такого кода
А что, ошибку у меня никто не нашел еще?))))
Подсказываю: uint все маски должны быть)))
выделить из int значимые биты я могу решением в "лоб", а вот сделать универсальное решение... да не могу! (((
высока вероятность, что не объяснил как и куда хочу
есть 4 байта int / uint, и есть мой набор данных, которые хочу запаковать распаковать в оптимизаторе
предположим, что у меня получилось так запаковать:
какие типы мне нужны int_XXX я еще не прикидывал
но хочу иметь удобство использования в виде такого кода
o - отступ (битов), l - длина (количество битов), добавляемое значение, r - куда добавляем
Но особо не проверял.
Because you are not overriding a virtual function, you are using overloading.
Тут явно что-то не так
Тут явно что-то не так
Сделай метод шаблоном и получи к нему доступ
Сделай метод шаблоном и получи к нему доступ
Да это же лайфхак!!!
ps: +1 способ написать то, что с обновлением просто перестанет работать, когда подправят этот лафхак
Да это же лайфхак!!!
ps: +1 способ написать то, что с обновлением просто перестанет работать, когда подправят этот лафхак