Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(kirjanov @  25.4.2006,  13:43 Найти цитируемый пост)
только наверное 65535 ;)  

Да, очепятки  smile  

Автор: Borny 25.4.2006, 14:04
Цитата

Аналогично для 32 бит без знака:
max=(2^32)-1=4294967295
Со знаком:
от -2^31 до (2^31)-1, то есть от -2147483648 до 2147483647

Ну это вобщем  понятно  smile 
Просто в книге указано максимальное значение для 16 и 32 бит одинаковое, от -32768 до 32767 со знаком и 65535 - без знака.  Вот и хочется разобратся, может расположение или значения в 32 битной форме отличается от 16 битной реализации числа с типом int?

Добавлено @ 14:05 
Или в книге что-то напутали? 

Автор: adonin 25.4.2006, 15:05
Цитата(Borny @  25.4.2006,  14:04 Найти цитируемый пост)
может расположение или значения в 32 битной форме отличается от 16 битной реализации числа с типом int?

Нет.
Цитата(Borny @  25.4.2006,  14:04 Найти цитируемый пост)
Или в книге что-то напутали? 

Возможно. 

Автор: sergejzr 25.4.2006, 15:30
Тип int наверняка определён в книге как (2^16)-1, а сколько в нём бит физически - уже значения не имеет.
Для 64 бит бери что нибудь вроде int_64. Так же и тут физическое кол-во бит не будет иметь значения и в 32 битной системе на обьект такого типа будет просто уходить 2 ячейки.

Хотя стандартом названия типов вроде не определены. Можешь написать свой компилер и int в 11 бит определить smile . 

Автор: 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. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)