Я пытаюсь создать программу, которая печатает позицию самого левого 1 бита в C, но без циклов.
Это то, что я собрал до сих пор:
#include<stdio.h>
int main() {
unsigned int x, y;
printf("Enter an integer: ");
scanf("%d", &x);
// Bit
x |= x >> 4;
x |= x >> 2;
x |= x >> 1;
x ^= x >> 1;
printf("\n%d", x);
return 0;
}
Это печатает самый левый бит как целое число, но у меня возникают проблемы с преобразованием его в позицию его самого высокого наборабит.
128 должно быть 8 (1000 0000), 64 должно быть 7 (0100 0000)