Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц - Assembler

Узнай цену своей работы

Формулировка задачи:

кто может, напишите пожалуйста, с ассемблером беда( 2. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц. 13. Дан массив из 3 байт. Рассматривая его, как массив из 24 бит, посчитать количество одиночных единиц в окружении нулей. Конец последовательности рассматривать как нуль.

Решение задачи: «Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц»

textual
Листинг программы
result:=popcnt(x)-popcnt(((x shl 1)and x)or((x shr 1)and x));

Объяснение кода листинга программы

  1. Задача: посчитать количество единиц в массиве из 8 байт, рассматривая его как массив из 64 бит.
  2. Используется функция popcnt (очевидно, это функция подсчета количества популяций), а также операции сдвига и побитового И.
  3. Выражение ((x shl 1)and x) означает, что мы сдвигаем x вправо на 1 позицию и затем применяем побитовую операцию И с самим x.
  4. Выражение ((x shr 1)and x) означает, что мы сдвигаем x влево на 1 позицию и затем применяем побитовую операцию И с самим x.
  5. Значение выражения (x shl 1)and x) равно количеству единиц в x, умноженному на 2 в степени 1 (т.е. 2).
  6. Значение выражения ((x shr 1)and x) равно количеству единиц в x, умноженному на 2 в степени -1 (т.е. 1/2).
  7. Разница между количеством единиц в x и количеством единиц в ((x shl 1)and x) равна количеству единиц в ((x shr 1)and x).
  8. Значение выражения (x shl 1)and x)or((x shr 1)and x) равно количеству единиц в x.
  9. Значение выражения popcnt(x)-popcnt(((x shl 1)and x)or((x shr 1)and x)) равно количеству единиц в x, умноженному на 2 в степени -1 (т.е. 1/2).
  10. Значение переменной result равно количеству единиц в x, умноженному на 2 в степени -1 (т.е. 1/2).

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы