Возвести число в степень, используя битовые операции - C (СИ)
Формулировка задачи:
for (i = 16; i > 1; i--) { tmp = powf(2,16-i); }
Решение задачи: «Возвести число в степень, используя битовые операции»
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 в степень, используя битовые операции сдвига.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д