Прист жж0т! о_О или WTF?
-
ой, мя ошиблась адресом............... и след пропал, лишь пыль столбом
-
pashaz, двойные числа не имеют плавающей точки.. Что-то я не понял
ИлиEgo74 ужё всё объяснил? О.о
-
Откуда вы такие умные?О___о
-
а это фиксированная точка
ня
но кажется до меня дошло уже
000 = 000 дк
011 = 101 дк
000+101=11(1)01 уряно дык откуда 16777213 взялось? объясните нубу=(
Просто переглючило? -
pashaz, нубяра =_=
Пример:
Берем в десятичной системе число 1. Отнимаем 3. Получаем -2.
Теперь берем в двоичной системе: 0001, 0011.
-2 получаем так:- Берем 2: 0010
- Инвертируем. 1101
- Прибавляем 1.
- Получаем 1110.
- Смотрим: 1110 похоже очень на число 14. Но мы же знаем, что это на самом деле 1111111111111111 (...) 1110, что показывает "отрицательность" :mrgreen:
А так как отрицательных чисел на форуме нет, то некое отрицательное число из двоичного кода перевелось в положительное десятичного :mrgreen:
11...1110{2} = -2 {10}
Для форума 1110 {2} = 14 {10}Теперь понятно? :mrgreen:
-
Не знаю, что у вас там с точками.. Но в двоичных числах их нету. Хотя книжка по программированию матсопроцессора на полке лежит, там есть описание)) Хоть у нас тут и извращённые три байта, я объясню на примере одного байта
0 = 0000 0000
1 = 0000 0001
2 = 0000 0010
-1 = 1111 1111 = 255 = 1 0000 0000 - 0000 0001
-2 = 1111 1110 = 254 = 1 0000 0000 - 0000 0010Получается, что отрицательное двоичное число = разница вывернутого наизнанку положительного двоичного числа и единицы. Знак числа (+ и -) определяется крайним левым битом. Это сделано для удобства. Так, команда ADD (сложение двоичных чисел) не думает об этом последнем (или первом, если угодно) бите, она просто складывает числа. Пример: -1 + 2 = 255 + 2 = 1111 1111 + 0000 0010 = 1 0000 0001. Так как байт имеет всего восемь битов, то результат в нём уместиться не может, и крайний левый бит попадает во флаг cf. Этим можно отследить то, что результат выбился за пределы (255 + 2 = 257 > максимального беззнакового значения байта) Так же есть флаг of, регистрирующий переход единицы из предпоследнего разряда.. Но это вам знатьне положено
В случае Приста у него было 0 сообщений, отняли одно (или прибавили минус одно). Но -1 по совместительству равен и 255 (или 16777215, или 0xFFFFFF, или 111111111111111111111111 в случае, если число занимает три байта, как у нас на сервере). 0 + 111111111111111111111111 = 111111111111111111111111 = -1 = 16777215 = 0xFFFFFF. Но никто не стал следить за флагами cf и of, потому что число сообщений не может быть отрицательным
И вышло, что у Приста 16777215 сообщений, потом ещё два удалили, стало 16777213..
Что ещё не понятно?)
З.Ы. В микропроцессоре существуют всего две команды, которые учитывают крайний левы бит, или знак операнда. Это команды idiv и imul (деление и умножение чисел со знаком), которые существуют наряду с командами умножения чисел без знака div и mul
-
пхпББ весь дырявый как решето :evil:
Лиc, у меня препод по информатике в таком стиле излагал. Ничерта не понять, только путаешься еще больше -
3atoi4i, ну не объяснять же мне самые основы?) Попытайтесь использовать мозг)
-
Хорошо
-
Вообщем ясно, не надо было над оффтопом извращаться
А нельзя поставить счетчик на оффтоп отдельный. А на экран выводить Число сообщений = Число всех - Число из оффтопа ???
Или это сложно реализовать ???