SA-MP Forums Archive
[Tutorial] 32 слота одной переменной - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [Tutorial] 32 слота одной переменной (/showthread.php?tid=542550)



32 слота одной переменной - SoNikMells - 20.10.2014

Давненько хотел поместить в одну переменную несколько значений, и я добрался до своего желаемого.

pawn Code:
new bool:Arr0;
new bool:Arr1;
new bool:Arr2;
//и т.д. до 32
Это заняло бы у нас 128 байт (4*32)

В нашем-же случаи нужна всего одна переменная:
pawn Code:
new Arr;
И на этом мы сэкономим 124 байт. Довольно не мало — согласитесь.
А затратили мы на 32 слота — 4 байта, всего по 1 биту на слот.

1 байт = 8 бит
4 байт = 32 бит


И решил я написать несколько макросов для использования всей этой фигни
С их помощью возможно изменять значение на 1 или 0 (true | false) для каждого слота.
А так-же узнать заполнен-ли определённый слот.
*
*
*

Описание:
pawn Code:
#define setBit_1(%1,%2)     %1|=(1<<%2)
#define setBit_0(%1,%2)     %1&=~(1<<%2)
#define getBit(%1,%2)       ((1<<%2)&%1?1:0)
#define addBit(%1)      %1=-1
#define delBit(%1)      %1=0
Вот и решайте, использовать 64 переменных типа bool занимая 265 байт(2120 бит) либо
использовать данные макросы имея всё те-же 64 слота, а занимая всего 8 байт(64 бит).

Автор: SoNik))


Re: 32 слота одной переменной - OKStyle - 20.10.2014

Где-то я уже это видел.


Re: 32 слота одной переменной - Stepashka - 20.10.2014

Топикстартер открыл для себя бинарную арифметику?!


Re: 32 слота одной переменной - OKStyle - 21.10.2014

https://sampforum.blast.hk/showthread.php?tid=332649 вот тут, наверное, я видел.


Re: 32 слота одной переменной - SoNikMells - 21.10.2014

Увидев несколько макросов подумал, зачем мне 1..15 числа на 8 слотов, если нужно всего-то 0..1 да и слотов явно будет больше. Изучил побитовые операторы и сделал то, что меня интересовало не видя не единой темы с манипуляциями по 1 биту.


Re: 32 слота одной переменной - jhonyxakep - 23.10.2014

Скоро изобретут BCD числа