underW
Newbie-
Posts
24 -
Joined
-
Last visited
underW's Achievements
Explorer (1/14)
0
Reputation
-
ну вообще то я согласен, если смотреть со стороны РНР - то это мой чистейший провал, согласен Если смотреть со стороны фундаментального программирования, без привязки к конкретному языку - то все нормально Veseloff, Вы абсолютно правы, все опирается в два варианта записи нуля. На самом деле имеем такую картину: есть у нас 1 байт - 8 бит, в этот объем мы можем запихнуть одно из 256 значений с диапазона [0-255] и это для безнаковых чисел. Для знаковых чисел мы определяем старший бит как знаковый и само число записываем в оставшиеся 7 бит, так как есть только 7 бит, значит к-во значений, которые мы можем записать ровно в 2 раза меньше от кого количества, когда мы работаем с 8 битами: 256/2=128; само число будет принадлежать диапазону [0-127]. При переходе к отрицательным числам, первое отрицательное число, на которое мы попадаем будет 1|000 0000 - то есть это (-0). Понятие отрицательного нуля (-0) так же как и положительного нуля (+0) существует в математике, но это все скорее некие абстракции и они нам не нужны smile Поэтому в ДК отрицательный ноль выбрасывается и даже не рассматривается, вместо него просто вводиться еще одно дополнительное число (-128). Вот как оно туда помещается и на выходе переменная типа byte вмещает в себя значение от (-128) до (127). Все, вопрос решен.
-
Если посмотреть любой язык программирования, в том числе и на PHP, то в нем переменная типа byte может содержать значение из диапазона от (-128) до (127) включительно. Суть вопроса заключается в том, что как в 1байт (8 бит) впихивается число (-128)??? Если рассматривать прямой код, то в нем при 8 битах старший бит является знаковым, а остальные 7 бит отводятся для записи самого числа, при таком раскладе, максимальным положительным числом будет - 0|1111111 (127), максимальным отрицательным числом будет - 1|1111111 (-127). Становиться вполне очевидным, что при использовании прямого кода для записи чисел со знаком в 1байт можно поместить значение из диапазона (-127) до (127). Но, Архитектура х86 для записи отрицательных чисел использует так называемый дополнительный код (ДК). Получается, что при использовании именно ДК, мы можем работать с диапазоном от (-128) до (127). Самый популярный пример алгоритма перевода в ДК, который мне удалось нагуглить, заключаеться в следующем: Для перевода десятичного числа со знаком в двоичное необходимо сначала записать его в двоичном виде. Если число отрицательное, то нужно получить обратный код (1 заменить на 0 и наоборот) и прибавить единицу к полученному результату. или другими словами, более лаконично: 1. записать прямой код модуля числа; 2. инвертировать его (заменить единицы нулями, нули — единицами); 3. прибавить к инверсному коду единицу. Пример: двоичный код +11 инверсия +1 -11 ————> 0000 1011 —-> 1111 0100 —> 1111 0101 В приведенном примере дополнительным кодом числа 1011 является 11110101. Знаковый бит 1 означает, что рассматриваемое число отрицательно. Исходя из такого алгоритма, вообще становиться не понятным откуда берется ограничение на (-128): в 1 пункте сразу же сказано - записать прямой код модуля числа - в 1 байт влезет не то что модуль (-128) но и модуль (-255). Но если учесть ту особенность ДК при записи отрицательного числа, что знаковый бит всегда равен 1 и немного поэкспериментировав с ним, становится видно, что только при работе с отрицательными числами до (-128) включительно, знаковый бит равен 1, если ити дальше (-129), (-130) - то знаковый бит получаем 0, то есть мы наталкиваемся на ошибку. Неужели этим и объясняется диапазон от (-128) до (127)? А теперь гляну на еще один алгоритм определения ДК: то есть алгоритм остается тот же самый, только пример другой: Для числа -1101(-13): Прямой код 1|0001101 Обратный код 1|1110010 Дополнительный код 1|1110011 Судя из этого примера, ДК формируется на основе обратного кода, тот в свою очередь формируется на прямом коде. Посмотрим, как у нас записан прямой код: 1|0001101 - видим, что старший бит отведен для записи знака, остальные 7 - для записи самого числа, значит мы снова наталкиваемся на диапазон от (-127) до (127) и опять не можем вместить (-128). Вот собственно вопрос остается открытым, как же влазит (-128) и 1 байт?
-
вопрос решен. Great Rash, спасибо.
-
ну я вот тоже думал о такой реализации, а потом решил, что должно быть по идее и более элегантное решение сейчас пойду попробую хоть это
-
в пределах <fieldset> есть набор однотипных div все они расположены в столбик один под одним, кроме одного - который расположен справа- точнее в верхнем правом углу, это за счет установки свойства float:right; все чудненько, а теперь вот необходимо под этим дивом установить еще один такой же, как я не мудровал с float, clear, ничего не получилось, они размещаются друг возле друга, а не один над другим, подскажите, пожалуйста, как сделать правильно.
-
Dimitry Wolotko, что б поржать?
-
да тут же суть в том, что нужно как можно быстрее, но и не в ущерб качеству... как то сейчас больше склоняюсь к варианту не спать всю ночь, эх!
-
Стоит задача реализации каталога цветочного магазина. В каталоге должно содержаться описание растений упорядоченных по категориям(семейство кактусы, семейство семи цветиков). Минимальный функционал: просто отображение растений, +админка с возможностью редактирования описаний и фоток. Каталог должен быть готов на вчера. Теперь сам вопрос: может стоит просто поискать готовый простенький скрипт каталога? (поделитесь ссылкой) Или может получиться и самому за ночь какое то подобие написать?
-
ребят, спасибо, разобрался
-
LokiDi L0ck, уже неоднократно натыкаюсь на пример с рисованием фигур. Откуда он взят, какой первоисточник? Int, ооооо, вот, вот, вот, что то в этом плане я и хотел услышать
-
Сейчас вот стал более глубоко вникать в ООП в PHP, так вот: Абстрактные классы и методы Абстрактные методы имеют только объявление и не имеют реализации. Класс, который содержит такие методы, должен быть обязательно объявлен как абстрактный: <? abstract class MyClass { abstract public function fn(); } ?> Это все понятно, как объявлять и что это такое, НО ну никак не могу понять, зачеееем они надо???? Вот нашел такую цитату: А зачем тогда нужны абстрактные методы и классы? А чтобы описать объект, который будет реализован, но который еще не реализован. Зачем описывать объект, который будет реализован, но еще не реализован? В чем суть абстрактного класса??? Можно объяснить на пальцах? Спасибо.
-
тоесть? не,не оно же начальство какое же тут сам
-
меня все устраивает, НО, есть человек, который дал мне задание, и который утверждает, что все-все чаты работают без автообновления, и что это вообще прошлый век... поэтому, мне надо или сделать как мне сказали, или же привести жесткие аргументы, что все делается так и так, а не наоборот.
-
я вот тоже так думаю, это же мини-чат, ну максимум 50 сообщений будет, минимум пользователей, та хоть каждые пол секунды ставить можно, висеть, грузить, тупить ничего же не будет, но вот как же быть с условием без автообновления?
-
мне поставили такую задачу: реализовать чат, но никаких автообновлений быть не должно, то есть, не должно быть такого, что через 5, 10, 30 сек. мы лезем и смотрим, что там с новыми сообщениями, как только появляется новое сообщение, оно само должно вылезть в окошке, хмм, но так же нельзя ну никааааак, да/не?