Подсчет минимального количества байтов, необходимых для представления целого числа со знакомC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Подсчет минимального количества байтов, необходимых для представления целого числа со знаком

Сообщение Anonymous »

Моя задача кажется простой: мне нужно вычислить минимальное количество байтов, необходимое для представления целочисленной переменной (например, если целое число равно 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»