Объясните плиз.
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 не могу врубиться!!!
А теперь - то же самое запишем битами:
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
спасибо я поняла как считать, просто непонятно почему 0xFFFF выдает вместо 65 535 значение -1. Это как-то связано с переполнением типа int?
Это связано с тем, что у тебя на машине размер long int равен двум байтам (я не знаю, что это за компилятор и что за архитектура), и действительно имеет место переполнение...