Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
abrdabr
Заблокирован
1

Почему макс short int равен 65535?

27.12.2016, 12:04. Просмотров 561. Ответов 15
Метки нет (Все метки)

Делаю sizeof() получаю 4 байта
1байт=8бит
те 4байта=32 бита
но бит это 0 или 1
таки образом есть последовательность из 0 и 1 длиной 32 символа
но максимальная вариативность равна 34в квадрате те 1024
куда сохраняются недостающий диапазон?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 12:04
Ответы с готовыми решениями:

Почему такой вывод (sizeof(short + short) - 4)
int _tmain(int argc, _TCHAR* argv) { short a = 3; short b = 5; cout << sizeof(a) << endl;...

В чем разница между long int и short int
Извините если вопрос нубский, но я ни как не могу понять смысл long int и short int. Например с...

Разница int, short, unsigned int, unsigned short
Есть например цикл который проходит по массиву в котором 100 элементов. В чем практическая выгода...

short int и short
Какая разница, инициализирую я переменную как short int или же как short ? Вроде и тот, и тот тип...

short vs int
Зачем в си два типа данных (short, int) с одинаковым диапазоном значений?

15
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4853 / 2496 / 697
Регистрация: 18.10.2014
Сообщений: 4,333
27.12.2016, 12:16 2
Цитата Сообщение от abrdabr Посмотреть сообщение
Делаю sizeof() получаю 4 байта
sizeof чего именно?

Цитата Сообщение от abrdabr Посмотреть сообщение
1байт=8бит
те 4байта=32 бита
но бит это 0 или 1
таки образом есть последовательность из 0 и 1 длиной 32 символа
Последовательность из 32 битов.

Цитата Сообщение от abrdabr Посмотреть сообщение
но максимальная вариативность равна 34в квадрате те 1024
О чем речь? Откуда взялось 34 в квадрате?

Цитата Сообщение от abrdabr Посмотреть сообщение
куда сохраняются недостающий диапазон?
Ничего не ясно. И при чем здесь вообще short int?
0
abrdabr
Заблокирован
27.12.2016, 12:25  [ТС] 3
TheCalligrapher, typedef short int aaa; sizeof(aaa);
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Последовательность из 32 битов.
вот именно те max aaa = 111111111111111111111111111111111 но весь диапазон чисел который может быть передан 32 еденицами и нулями 1024 те
bin 1(*32) = dec 1024 же или я где то не прав?
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
34 в квадрате?
ошибся, сообщение отредачил но поздно видимо 32.32=8*4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
short int
ну в принципе не причём можно int взял для примера
-------------------
те меня интересует откуда взялось число 65535
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4853 / 2496 / 697
Регистрация: 18.10.2014
Сообщений: 4,333
27.12.2016, 12:32 4
Цитата Сообщение от abrdabr Посмотреть сообщение
typedef short int aaa; sizeof(aaa);
Это на какой платформе? Обычно sizeof(short int) == 2. Но sizeof(short int) == 4 - не запрещается.

Цитата Сообщение от abrdabr Посмотреть сообщение
вот именно те max aaa = 111111111111111111111111111111111 но весь диапазон чисел который может быть передан 32 еденицами и нулями 1024 те
bin 1(*32) = dec 1024 же или я где то не прав?
Беззнаковый диапазон 32 битов: от 0 до 232 = 4294967296
Знаковый: от -231 = -2147483648 до 231-1 = 2147483647

Цитата Сообщение от abrdabr Посмотреть сообщение
те меня интересует откуда взялось число 65535
Диапазон беззнакогового unsigned short int размером 2 байта: от 0 до 65535. Оттуда и вязлось. Но если у вас sizeof(short int) == 4, то к вам это число не относится.

Скорее воспрос в том, где вы взяли ваше 1024.
0
27.12.2016, 12:32
Байт
Эксперт C
20451 / 12981 / 2728
Регистрация: 24.12.2010
Сообщений: 27,163
27.12.2016, 12:34 5
abrdabr, Надо бы повторить основы комбинаторики
Из N двоичных символов можно создать 2N разных комбинаций
Более общо. Из N цифр в K-ичной системе счисления можно образовать KN разных чисел
0
abrdabr
Заблокирован
27.12.2016, 12:35  [ТС] 6
TheCalligrapher, эммм чтото пошло не так, видимо...
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8121 / 4973 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
27.12.2016, 12:40 7
Цитата Сообщение от abrdabr Посмотреть сообщение
те меня интересует откуда взялось число 65535
Размер short int зависит от системы.
Можно узнать размер и диапазон значений вот так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <limits>
 
int main()
{
    std::cout << sizeof(short int) << std::endl
        << std::numeric_limits<short int>::min() << std::endl
        << std::numeric_limits<short int>::max() << std::endl;
}
У меня вывод дал
Код
2
-32768
32767
То есть 2 байта (16 бит) могут хранить значения от -32768 до 32767.
Возьмём 16 бит. Один будет отвечать за знак. С помощью оставшихся мы можем получить http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{15} комбинаций, что равно 32768. Учтём, что под ноль тоже надо место. Получим искомый диапазон [-32768, 32768)
0
abrdabr
Заблокирован
27.12.2016, 12:42  [ТС] 8
Байт, блин 2^8 а не 8^2 -1 на ноль. теперь ясно. а можно ли в cpp оперировать бесконечностями те есть ли тип больше long int? ну ессна при стандартных библиотеках

Добавлено через 1 минуту
MrGluck, вау вау вау палехче я только 4 урок прочитал
0
Maxim Prishchepa
Эксперт С++
1926 / 1038 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
27.12.2016, 12:44 9
short int bytes(2) values: -32 768 / 32 767
unsigned short int bytes(2) values: 0 / 65 535
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8121 / 4973 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
27.12.2016, 12:49 10
Цитата Сообщение от abrdabr Посмотреть сообщение
вау вау вау палехче я только 4 урок прочитал
Считайте это 5 уроком.
Вообще, это основы информатики, их в школе преподают.
0
abrdabr
Заблокирован
27.12.2016, 12:53  [ТС] 11
Maxim Prishchepa, ну да, забыл про беззнаковость... но в таком случае вопрос,- при объявлении переменных выделяется область памяти без очищения, а при выделении серии переменных память выделяется последовательно или как комп захочет те объявив стопиццот перменных я получу все данные находящиеся в оперативке?

Добавлено через 1 минуту
MrGluck, я оч стар для плюсов я помню только то что программировал на кирилице
0
Maxim Prishchepa
Эксперт С++
1926 / 1038 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
27.12.2016, 12:54 12
Цитата Сообщение от abrdabr Посмотреть сообщение
или как комп захочет те объявив стопиццот перменных я получу все данные находящиеся в оперативке?
а это уже от ОС зависит, как ей в голову вздумается вам дать память, так и даст
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8121 / 4973 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
27.12.2016, 12:55 13
Цитата Сообщение от abrdabr Посмотреть сообщение
я оч стар для плюсов я помню только то что программировал на кирилице
Так тему вы создали в разделе С++.
Можете не вникать в синтаксис кода, там вполне говорящие названия у функций. Не важно какой это язык, можно догадаться что должен делать данный код.
1
abrdabr
Заблокирован
27.12.2016, 13:00  [ТС] 14
MrGluck, я так и делал пока не столкнулся с полным непониманием,- ну задаю вроде понятный вопрос но в ответ читаю какюто дичь(не на форе на "вопроснике для программистоф")... вот и решил прочитать чтонить ну хоть новое узнал про блоки кода те {} не только тело функции\условия
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4853 / 2496 / 697
Регистрация: 18.10.2014
Сообщений: 4,333
27.12.2016, 13:02 15
Цитата Сообщение от abrdabr Посмотреть сообщение
память выделяется последовательно или как комп захочет те объявив стопиццот перменных я получу все данные находящиеся в оперативке?
В традиционных современных ОС используется виртуальная память. Переменные располагаются в виртуальном адресном пространстве процесса, а на физическую "оперативку" проецируются непредсказуемым образом. Поэтому что вы там увидите в своих стопиццот переменных - предсказать невозможно.

Это не говоря уже о том, что доступ к неинициализированной переменной в С не гарантирует никакого чтения из памяти.
0
abrdabr
Заблокирован
27.12.2016, 13:16  [ТС] 16
TheCalligrapher, ну это я для общего развития интересовался... ну и тогда ещё вопрос,- для локальных переменных память выделятся же каждый раз? те можно создать реальный рандом?
ну для реала же, в виртуалках он всегда будет равен нулю
0
27.12.2016, 13:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2016, 13:16

Почему в консоле выводится 65535, а не 0?
Здравствуйте. Поясните что я делаю нитак. Ввожу, например, 3-энтер-0 и ахутнг не выводится, а...

Размер указателя short int
Доброе утро. Возник вопрос почему short int = 8 байт? Он же должен занимать 2 байта в 32-х...

Преобразование 2-х char в один short int
Пробую преобразовать 2 char в один short int таким образом: char buf; short int skl; int...


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

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

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