Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
#1

Минимальное количество байт, которое займёт отрицательное число - C++

18.05.2013, 21:45. Просмотров 443. Ответов 1
Метки нет (Все метки)

Нужно узнать минимальное количество байт, которое займёт число. То есть в int у нас может быть число и 256 (00000001 00000000), которое займёт 2 байта, и 255 (00000000 11111111), которое может занять всего 1 байт. Нужно вычислить это минимальное количество.

Написал функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int BytesCount(int Number)
{
    int NumberOfBytes = 0;
 
    do
    {
        Number = Number >> 8;
        NumberOfBytes++;
    } while(Number != 0);
 
    return NumberOfBytes;
}
Для 255 и 256 она возвращает правильное число байт, но вот для -255 (11111111 00000001), после двукратного сдвига на 8 бит вправо, получается число -1. Почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 21:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Минимальное количество байт, которое займёт отрицательное число (C++):

Минимальное число, которое делится нацело - C++
Необходимо решить задачу с помощью цикла! Условие: Напечатать минимальное число, большее 200, которое нацело делиться на 17 То что...

Найти отрицательное число и после отрицательное число заменить все элемент на нули - C++
Найти отрицательное число и после отрицательное число заменить все элемент на нули

Определить минимальное число пирамид которое требуется сложить - C++
Капитан Вася всегда держит на своем корабле запас пушечных ядер для борьбы с пира- тами. Так как он привык во всем поддерживать порядок,...

Напечатать минимальное число, большее 200, которое нацело делится на 17 - C++
Напечатать минимальное число, большее 200, которое нацело делится на 17.

Напечатать минимальное число, больше 500, которое нацело делится на 47 - C++
Сделалано в DEV C++,нужно переделать в NetBeans IDE 2)задание: Напечатать минимальное число, больше 500, которое нацело делится на...

Отобразить минимальное положительное число, которое невозможно представить в виде суммы элементов массива - C++
Отобразить то минимальное положительное число, которое невозможно представить в виде суммы элементов массива. Количество действий O(n^2). ...

1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
18.05.2013, 22:47 #2
SDmaN, результат сдвига целого со знаком машиннозависим. В данном случае все новые биты принимают значение знакового ( старшего ) бита, сам он никуда не сдвигается. В итоге у Вас получается 11111111 11111111.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 22:47
Привет! Вот еще темы с ответами:

Найти минимальное количество купюр, которое необходимо использовать, чтобы выдать сумму в n гривен - C++
В банкомате имеются в достаточном количестве купюры номиналом 10, 20, 50, 100, 200 и 500 гривен. Найти минимальное количество купюр,...

Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи - C++
Здравствуйте. Не первый раз создаю тему об олимпиадных задачах , думаю, и не последнюю)) Возникла проблема со следующей задачей: ...

Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета - C++
Написал код для одной задачи. Ответ выдает он вроде правильный. Но на сайте при тестировании моего алгоритма, он проходит тест на 31%...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. - C++
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru