Моя задача кажется простой: мне нужно вычислить минимальное количество байтов, необходимое для представления целочисленной переменной (например, если целое число равно 5, то я хотел бы вернуть 1; если целое число равно 300, я бы хотел возврат 2). Не имея в виду тип данных int, который, как указано в комментариях, всегда просто sizeof(int), я имею в виду математическое целое число. И у меня почти есть решение. Вот мой код:
Код: Выделить всё
int i;
cin >> i;
int length = 0;
while (i != 0) {
i >>= 8;
length++;
}
Проблема в том, что это не работает ни с отрицательными числами (я не смог определить почему), ни с некоторыми положительными числами, где самый старший бит равен 0. (потому что знаковый бит — это бит, который делает его на один бит больше)... Есть ли какие-нибудь подсказки или советы, которые я могу получить, как учитывать эти случаи?
Подробнее здесь:
https://stackoverflow.com/questions/484 ... ed-integer