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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
#1

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

22.03.2013, 18:18. Просмотров 1459. Ответов 7
Метки нет (Все метки)

Я реализовал функцию перевода из двоичной системы счисления в десятичную, она работает хорошо, но когда я хочу ввести четырех байтный число, то выводит -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++):

Максимальное значение переменной типа int - C++
Если тип long в 2 раза больше чем int. Сколько максимум в int? В чём они измеряются в памяти? в цифрах вывода?

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int - C++
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите перегруженную функцию power (), ...

Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) - C++
Представьте такую ситуацию. Есть у вас массив чисел: Mass И вы хотите передать его в функцию. Я делаю это так: //объявим ф-ю: ...

Ввод числа, большего, чем максимальное число для int - C++
Столкнулся с проблемой, что если в программу, не важно какую, ввести число с помощью cin, большее, чем максимальное для, в моем случае,...

Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку. - C++
Задача направленная на усвоение следующих понятий: прототип функции; заголовок функции; тело функции; параметры, принимаемые функцией...

Аргумент типа int не совместим с параметрами типа int* - C++
помогите, ошибка в программе &quot;аргумент типа int не совместим с параметрами типа int*&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
22.03.2013, 18:23 #2
Используй тип unsigned long long (он вроде больше)
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
22.03.2013, 19:59 #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
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
22.03.2013, 21:32 #4
Цитата Сообщение от Why so seriouS Посмотреть сообщение
но когда я хочу ввести четырех байтный число, то выводит -1
Если массив, представляющий биты, заполнен единицами, то ответ правильный. Зачем что-то менять?
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:02  [ТС] #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Если массив, представляющий биты, заполнен единицами, то ответ правильный. Зачем что-то менять?
Мне интересно почему он правильный? По идее программа поднимает все числа в степень, и там никак не получится -1. И я знаю о том, что в двобайтовому виде например 11111111 == 255 == -1. Но в данном случае мне кажется что это не правильно.

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

Цитата Сообщение от Why so seriouS Посмотреть сообщение
Но в данном случае мне кажется что это не правильно.
Почему неправильно?
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:06  [ТС] #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Почему неправильно?
Но оно равно и другому, положительном числу! И я думаю, что программа должна вывести его, а не число со знаком -
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
22.03.2013, 22:10 #8
Цитата Сообщение от Why so seriouS Посмотреть сообщение
Но оно равно и другому, положительном числу!
Тут уже все зависит от того, как программа будет интерпритировать это число. А как она это будет делать - зависит от программиста. У программиста С++ есть средства типа signed/unsigned.

Цитата Сообщение от Why so seriouS Посмотреть сообщение
И я думаю, что программа должна вывести его, а не число со знаком -
Тогда нужно сделать так
C++
1
cout << (unsigned long) sum;
или изначально использовать беззнаковый тип.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 22:10
Привет! Вот еще темы с ответами:

Перевести массив цифр в число типа int или float - C++
Всем здрасти , а не подскажет ли кто часом, можно ли массив с цифрой в каждом злементе (a=1, a=3, a=7, a=n и.т.д) перевести в число типа...

Наибольшее число, которое можно записать в переменную типа int - C++
Доброго времени суток! Есть функция, вычисляющая значения ряда Фибоначчи: typedef vector&lt; int &gt; fibonachiSequence; ... //...

8-и значное число типа int преобразовать в строчку char\string - C++
Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и значное число (тип int) и мне нужно его...

Написать функцию типа Beaty(int iA, int iB, int *pc) - C++
Задание: Написать функцию типа Beaty(int iA, int iB, int *pc); для выражения (iA+iB)/(iA*iB). Помогите решить!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.03.2013, 22:10
Ответ Создать тему
Опции темы

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