Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Прочая документация

Важная информация

Прочая документация Помощь, книги, инструкции, описания

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.05.2010, 00:18   #1
Foks
just a lazy user
 
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
Foks На верном пути
По умолчанию

В общем, вижу, много вопросов задается на одни и те же темы, решил создать. Просьба писать только по существу - дополнять эти мануалы, никакого обсуждения/флуда.
Начну с того, что уже написал в другой теме.

И так, некоторые поля в файле конфигурации (mangosd.conf, realmd.conf) являются битовыми масками (bitmask) -UsedProcessors и т.д. Так как многие новички не понимают, что это такое, объясню. Чтобы понять что это такое, нужно научиться переводить числа между разными системами исчисления. Для начала научимся переводить из любой системы в нашу привычную - десятичную. Именно в десятичной системе записываются все параметры в mangosd.conf.

Битовая операция в программировании — некоторые операции над цепочками битов. В программировании, как правило, рассматриваются лишь некоторые виды этих операций: логические побитовые операции и битовые сдвиги. Битовые операции применяются в языках программирования и цифровой технике, изучаются в дискретной математике.

Чтобы перевести число из любой системы счисления в десятичную нужно:
Каждую исходную цифру умножить на основу системы, поднесенную в степень - номер цифры начиная с нуля, считать СПРАВА, и полученные числа просуммировать.
Примеры:
Из двоичной 10111: 1*(2^0)+1*(2^1)+1*(2^2)+0*(2^3)+1*(2^4)
Из троичной 122012: 2*(3^0)+1*(3^1)+0*(3^2)+2*(3^3)+2*(3^4)+1*(3^5)
Из восьмиричной 765: 5*(8^0)+6*(8^1)+7*(8^2)
---------
Битовая маска - число в двоичной системе.
В параметре UsedProcessors каждый бит указывает включено ли ядро. 0 - означает ядро выключено, 1 означает ядро включено. Нам нужно включить четыре ядра - нужно число 1111
1*(2^0)+1*(2^1)+1*(2^2)+1*(2^3)=1*1 + 1*2 + 1*4 + 1*8=1+2+4+8=15.
Значит, UsedProcessors=15.
Или, например, нужно включить только 2 ядра: нужно число 11
1*(2^0)+1*(2^1)=1*1 + 1*2=1+2=3.
Значит, UsedProcessors=3.
---------
В каждой системе счисления столько цифр, какая у неё основа
2: 2 цифры: 0, 1
3: 3 цифры: 0, 1, 2
5: 5 цифер: 0, 1, 2, 3, 4
8: 8 цифер: 0, 1, 2, 3, 4, 5, 6, 7
16: 16 цифер: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
a,b,c,d,e,f - тоже цифры. Просто в 16-ричной системе должно быть 16 цифр, а мы знаем только 10. Поэтому берут, что:
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
----
Из 16-ричной системы перевести в нашу (десятичную) переводим точно так же:
Число 18AF42C
12*(16^0) + 2*(16^1) + 4*(16^2) + 15*(16^3) + 10*(16^4) + 8*(16^5) + 1*(16^6) = 25883692
-------------
Между 2-, 8-, 10-, 16-ричными системами умеет переводить калькулятор винды в режиме "Инженерный". Сверху слева при этом выбирается текущая система:
Bin - двоичная
Oct - восьмиричная
Dec - десятичная (наша)
Hex - шестнадцатиричная
__________________
Так как нету кнопки "Фууу", скажу вам прямо... (c)

Последний раз редактировалось Foks; 09.05.2010 в 00:28.
Foks вне форума   Ответить с цитированием
13 пользователя(ей) сказали cпасибо:
D_f (09.05.2010), Hantet (26.05.2010), Konctantin (09.05.2010), lina (25.05.2010), Lordronn (02.02.2012), lovepsone (02.02.2012), MangMan (24.07.2010), partizanes (22.03.2012)
Старый 02.02.2012, 17:15   #2
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

У меня назрел вопрос! А как прочитать к примеру вот такой код 0x0002
Прочитав ваш мануал и потренировавшись я так понял это троичная форма, так как есть 2 и 0 (либо я не правильно понял)! А как понять что здесь обозначает x
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 02.02.2012, 17:59   #3
Deamon
WowCore Dev
 
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
Deamon Скоро придёт к известности
По умолчанию

Это не троичная форма.
Троичная форма в доке была преведена просто как пример.
Это обычная 16-ричная форма. Об этом говорит префик "0x" перед числом.
Deamon вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
lovepsone (02.02.2012)
Старый 02.02.2012, 18:34   #4
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от Deamon Посмотреть сообщение
Это не троичная форма.
Троичная форма в доке была преведена просто как пример.
Это обычная 16-ричная форма. Об этом говорит префик "0x" перед числом.
Ясно, но все таки как перевести в обычное число? Может х знак умножения ?
__________________
sql-language.ru

Последний раз редактировалось lovepsone; 02.02.2012 в 18:38.
lovepsone вне форума   Ответить с цитированием
Старый 02.02.2012, 18:49   #5
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

два, она и в Африке два. А здесь это два в шестнадцатеричной.

0x - префикс, который обозначает, что то что записано сразу за ним - 16-чное число и равно оно 0002, т.е. ДВА.
а в пхп !? вот читай - http://www.php.net/manual/ru/language.types.integer.php

Цитата:
Ясно, но все таки как перевести в обычное число?
чтобы перевести куда?

Присвой переменной и приведи переменную к целому числу. ПХП сам переведет.

Пример:

$a = 0x00020;

echo (int)$a;

и тебе напечатает - 32 (десятичное).
Кот ДаWINчи вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
KiriX (03.02.2012), lovepsone (02.02.2012)
Старый 02.02.2012, 18:53   #6
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

то есть 0x показывает на то что это 16-чное число и больше нечего ? А дальше 00020 можно самому подсчитать:
0*(16^0)+2*(16^1)+0*(16^2)+0*(16^3)+0*(16^4) = 32
Спасибо что не поленились мне все объяснить, из поста от Deamon, я плохо вчитался и не понял сути!
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 02.02.2012, 20:16   #7
Sid
Ученый
 
Аватар для Sid
 
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
Sid Скоро придёт к известностиSid Скоро придёт к известности
По умолчанию

Цитата:
0*(16^0)+2*(16^1)+0*(16^2)+0*(16^3)+0*(16^4) = 32
Отвыкайте так делать. Шестнадцатеричная система счисления это основная система счисления для любого программиста. Поверьте если перестанете представлять ее как нечто нестандартное, то легко сможете в уме считать на ней Человеку навязали стереотип 10тичной системы - он к нему привык и считать по другому мозг не поворачивается, просто попробуйте повернуть и все поймете.
__________________
SpellWork Qt4
Sid вне форума   Ответить с цитированием
Старый 16.02.2012, 01:11   #8
Foks
just a lazy user
 
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
Foks На верном пути
По умолчанию

Немного почистил тему от флуда.
__________________
Так как нету кнопки "Фууу", скажу вам прямо... (c)
Foks вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Mayss (17.02.2012)
Ответ

Метки
битовые операции


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 18:42. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot