Возвести число в степень, используя битовые операции - C (СИ)

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

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

Здравствуйте, как возвести 2^(16-i) используя битовые операции.
           for (i = 16; i > 1; i--) {
            tmp = powf(2,16-i);
        }

Решение задачи: «Возвести число в степень, используя битовые операции»

textual
Листинг программы
int ix    = 2;        // %00000000 00000000 00000000 00000010   
int ix2  = ix<<1;   // %00000000 00000000 00000000 00000100 
int ix3  = ix<<2;   // %00000000 00000000 00000000 00001000 
int ix4  = ix<<3;   // %00000000 00000000 00000000 00010000 
 
// и т.д.
 
 
int iy        = 3;        // %00000000 00000000 00000000 00000011 
int iym4    = iy<<2;   // %00000000 00000000 00000000 00001100

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

В данном коде возведение в степень выполняется с помощью сдвига двоичного представления числа вправо. При этом, в отличие от арифметического сдвига, используется битовая операция сдвига (<<), которая сдвигает все биты числа, включая самый старший, который является знаковым битом. Поэтому полученный результат всегда будет беззнаковым. В данном коде: — ix — это двоичное представление числа 2, т.е. 00000000 00000000 00000000 00000010 — ix2 — это результат сдвига ix вправо на 1 позицию. Т.е. 00000000 00000000 00000000 00000100 — ix3 — это результат сдвига ix вправо на 2 позиции. Т.е. 00000000 00000000 00000000 00001000 — ix4 — это результат сдвига ix вправо на 3 позиции. Т.е. 00000000 00000000 00000000 00010000 Аналогично: — iy — это двоичное представление числа 3, т.е. 00000000 00000000 00000000 00000011 — iym4 - это результат сдвига iy вправо на 2 позиции. Т.е. 00000000 00000000 00000000 00001100 Таким образом, в данном коде выполняется последовательное возведение числа 2 в степень, используя битовые операции сдвига.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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