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

Максимальное число типа int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 18:18     Максимальное число типа int #1
Я реализовал функцию перевода из двоичной системы счисления в десятичную, она работает хорошо, но когда я хочу ввести четырех байтный число, то выводит -1. Хочу советы как можно реализовать перевод с такими большими числами.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
void binary_to_ten(int* binary_code,int size)
{
    cout<<endl;
    long long int sum = 0;
    for(int i = 0; i < size; ++i){
        sum += my::pow(binary_code[i]*2,size-i-1);
    }
    cout<<sum;
    system("pause>0");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 18:18     Максимальное число типа int
Посмотрите здесь:

C++ Написать функцию типа Beaty(int iA, int iB, int *pc)
C++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
перевести в число типа int или float ? C++
C++ Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
C++ 8-и значное число типа int преобразовать в строчку char\string
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
22.03.2013, 18:23     Максимальное число типа int #2
Используй тип unsigned long long (он вроде больше)
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
22.03.2013, 19:59     Максимальное число типа int #3
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Используй тип unsigned long long (он вроде больше)
Плохая идея, старина.
не стоит пользоваться unsigned, уповая на лишний бит в представлении значения числа
Судя по вопросу, перед автором не стоит задачи поддержки определенного диапазона чисел. Плюс, неужто существует двоичное представление лишь для положительных чисел? Предложение по использованию unsigned еще и потому несостоятельно, что такие ограничение накладывает.

Добавлено через 8 минут
Если не хватает 64-битного знакового числа для работы программы, ну, тут уже нужно задуматься не над добавлением дополнительного квалификатора, который увеличит верхнюю границу ОДЗ и срежет нижнюю), но задуматься над сменой используемого типа данных вообще.

Вот тут можешь программно получать граничные значения типов на твоей реализации:

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <limits>
using namespace std;
 
int main()
{   
    cout << std::numeric_limits<long long>::max();
    cout << std::numeric_limits<long long>::min();
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
22.03.2013, 21:32     Максимальное число типа int #4
Цитата Сообщение от Why so seriouS Посмотреть сообщение
но когда я хочу ввести четырех байтный число, то выводит -1
Если массив, представляющий биты, заполнен единицами, то ответ правильный. Зачем что-то менять?
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:02  [ТС]     Максимальное число типа int #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Если массив, представляющий биты, заполнен единицами, то ответ правильный. Зачем что-то менять?
Мне интересно почему он правильный? По идее программа поднимает все числа в степень, и там никак не получится -1. И я знаю о том, что в двобайтовому виде например 11111111 == 255 == -1. Но в данном случае мне кажется что это не правильно.

Добавлено через 2 минуты
Цитата Сообщение от ITcrusader Посмотреть сообщение
Если не хватает 64-битного знакового числа для работы программы, ну, тут уже нужно задуматься не над добавлением дополнительного квалификатора, который увеличит верхнюю границу ОДЗ и срежет нижнюю), но задуматься над сменой используемого типа данных вообще.
Я думал над этим, хотел все хранить в чаровському массиве, но передо мной встала та же проблема, потому что эти числа надо как-то дадаты ..
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
22.03.2013, 22:03     Максимальное число типа int #6
Цитата Сообщение от Why so seriouS Посмотреть сообщение
И я знаю о том, что в двобайтовому виде например 11111111 == 255 == -1.
Ну и 111111...11111 (32 бита) тоже равно -1.

Цитата Сообщение от Why so seriouS Посмотреть сообщение
Но в данном случае мне кажется что это не правильно.
Почему неправильно?
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:06  [ТС]     Максимальное число типа int #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Почему неправильно?
Но оно равно и другому, положительном числу! И я думаю, что программа должна вывести его, а не число со знаком -
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 22:10     Максимальное число типа int
Еще ссылки по теме:

Аргумент типа int не совместим с параметрами типа int* C++
C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
22.03.2013, 22:10     Максимальное число типа int #8
Цитата Сообщение от Why so seriouS Посмотреть сообщение
Но оно равно и другому, положительном числу!
Тут уже все зависит от того, как программа будет интерпритировать это число. А как она это будет делать - зависит от программиста. У программиста С++ есть средства типа signed/unsigned.

Цитата Сообщение от Why so seriouS Посмотреть сообщение
И я думаю, что программа должна вывести его, а не число со знаком -
Тогда нужно сделать так
C++
1
cout << (unsigned long) sum;
или изначально использовать беззнаковый тип.
Yandex
Объявления
22.03.2013, 22:10     Максимальное число типа int
Ответ Создать тему
Опции темы

Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru