| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > 16 и 32 разрядные тип int |
| Автор: Borny 25.4.2006, 12:20 |
| Всем доброго времени суток. Я новичек в программировании и много не знаю. Сейчас занимаюсь по книге и уменя возникли пара вопросов. В чем разница между 16 и 32 битовыми реализацияи представления числа int? Например чило int может хранить числовые значения 65535 без знака и от -32768 до 32767 со знаком. Весь этот диапазон умещается в 16 битах, что происходит в 32 битах? |
| Автор: adonin 25.4.2006, 12:31 |
| Ну, вспоминайте информатику, для 16 бит беззнакового: max=(2^16)-1=35536-1=35535 Для 16 бит со знаком int принимает значения: от -2^15 до (2^15)-1, то есть от -32768 до 32767 Аналогично для 32 бит без знака: max=(2^32)-1=4294967295 Со знаком: от -2^31 до (2^31)-1, то есть от -2147483648 до 2147483647 |
| Автор: kirjanov 25.4.2006, 13:43 |
| to adonin, только наверное 65535 ;) |
| Автор: adonin 25.4.2006, 13:56 |
Да, очепятки |
| Автор: Borny 25.4.2006, 14:04 | ||
Ну это вобщем понятно Просто в книге указано максимальное значение для 16 и 32 бит одинаковое, от -32768 до 32767 со знаком и 65535 - без знака. Вот и хочется разобратся, может расположение или значения в 32 битной форме отличается от 16 битной реализации числа с типом int? Добавлено @ 14:05 Или в книге что-то напутали? |
| Автор: adonin 25.4.2006, 15:05 | ||
Нет. Возможно. |
| Автор: sergejzr 25.4.2006, 15:30 |
| Тип int наверняка определён в книге как (2^16)-1, а сколько в нём бит физически - уже значения не имеет. Для 64 бит бери что нибудь вроде int_64. Так же и тут физическое кол-во бит не будет иметь значения и в 32 битной системе на обьект такого типа будет просто уходить 2 ячейки. Хотя стандартом названия типов вроде не определены. Можешь написать свой компилер и int в 11 бит определить |
| Автор: Heremum 25.4.2006, 19:17 |
| Borny Подумай над смыслом словосочетаний 16 битный и 32-ух битный. Вот 16 бит: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. Это число 0, как не трудно понять. Значения каждого бита два: 0 или 1, а так как их 16, то соответственно взаимных комбинаций 0 и 1, 2 в 16 степени. Так же и с 32-ух битными: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. Вот тебе число 0 в 32-ух битном числе. Вариантов 2^32 степени. Разница в диапозоне числовом. Такие типы, в с++, например в спецификации MS, описаны как __in16 = int и __int32. |