Найти число в 8 раз меньше заданного не использую деления и сдвиги на Си
Не понятно, возможно ли вообще сдвинуть число, не используя <<, >> Например, с помощью операции И можно младшие три бита превратить в ноль, но как обрезать данные три нуля, не используя сдвиги совсем не понятно
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Битовые операции без сдвигов, умножений и делений:
#include "stdio.h"
int main() {
unsigned n;
scanf("%u", &n);
unsigned m = 0;
for (unsigned b8 = 8, b1 = 1; b8 != 0; b8 += b8, b1 += b1) {
if ((b8 & n) != 0) {
m |= b1;
}
}
printf("%u\n", m);
}