Помощь - Поиск - Пользователи - Календарь
Полная версия: 0xFF
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Тёмный Эльф
Объясните плиз.

long int znachenie;
znachenie=0xF=15;
znachenie=0xFF=255;
znachenie=0xFFF=4095;
znachenie=0xFFFF=-1;
znachenie=0xFFFFF=-1;
....
(борландовский компиль)

Если 0xF=15 я понимаю (раз 15 соответв. F в шестнадцатеричной с.с.), то откуда взялись цифры 255, 4095, -1 не могу врубиться!!!
volvo
А теперь - то же самое запишем битами:

znachenie=0xF=15; // 0xF = 0000 0000 0000 1111 = (2^4) - 1
znachenie=0xFF=255; // 0xFF = 0000 0000 1111 1111 = (2^8) - 1
znachenie=0xFFF=4095; // 0xFFF = 0000 1111 1111 1111 = (2^12) - 1
znachenie=0xFFFF=-1; // 0xFFFF = 1111 1111 1111 1111


Переведи это в 10 c/c, и увидишь, откуда такие значения...
Тёмный Эльф
спасибо я поняла как считать, просто непонятно почему 0xFFFF выдает вместо 65 535 значение -1. Это как-то связано с переполнением типа int?
volvo
Это связано с тем, что у тебя на машине размер long int равен двум байтам (я не знаю, что это за компилятор и что за архитектура), и действительно имеет место переполнение...
xds
Цитата(Тёмный Эльф @ 19.01.2008 3:33) *

спасибо я поняла как считать, просто непонятно почему 0xFFFF выдает вместо 65 535 значение -1. Это как-то связано с переполнением типа int?
Потому что ты выводишь их как int (скорее всего пишешь в printf %d вместо %ld). А long int у тебя равен 4 байтам.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.