1

Тема: AHK: Записать побитово выражение

Объясните, как записать и высчитать это выражение:
The STATUS is a bitwise value, which is obtained by adding up the different values for corresponding statuses:
1 = Started
2 = Checking
4 = Start after check
8 = Checked
16 = Error
32 = Paused
64 = Queued
128 = Loaded
For example, if a torrent job has a status of 201 = 128 + 64 + 8 + 1, then it is loaded, queued, checked, and started.
A bitwise AND operator should be used to determine whether the given STATUS contains a particular status.

2

Re: AHK: Записать побитово выражение

Не понял, что нужно записывать и высчитывать, всё вроде понятно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Записать побитово выражение

Я не понимаю, как тут составить уравнение, чтобы при сумме в которой было бы 16 выдавало бы сообщение об ошибке.

4

Re: AHK: Записать побитово выражение

А зачем что-то составлять? Я так понимаю, это результат выполнения какой-то команды, и из него нужно получить данные, нет?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Записать побитово выражение

Может, это в виду имеется.


summa := 2 + 4 + 8 + 16 + 32
If (summa & 16)
    MsgBox, Ошибка
Else
    MsgBox, Норма

6

Re: AHK: Записать побитово выражение

Я тоже так предположил, но тут не записать, а прочитать нужно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Записать побитово выражение

Я сделал так:

a := 201
n := 8
loop % n+1
{
   if (a - 2**n >= 0)
   {
      a -= 2**n
      result .= 2**n " + "
   }
   n--
}
msgbox % result

Просто, я думал, что правильней делать как-то через побитовые уравнения?

8

Re: AHK: Записать побитово выражение

Боюсь, ты что-то неправильно понял. Плюсы там не нужны, там одно число содержит в себе все результаты, которые можно получить с помощью операции &. Если нужно, наоборот, создать такое число, то просто сложить необходимые значения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Записать побитово выражение

Спасибо! Теперь понял!

10 (изменено: yalanne, 2016-07-05 20:21:20)

Re: AHK: Записать побитово выражение

Можно еще сделать что бы генерировало список существующих имен в числе.
Если понадобится, то вот:

msgbox % GetBitsInfo(201)

GetBitsInfo(num){
	Static Statused := {1:"Started",2:"Checking",4:"Start after check",8:"Checked",16:"Error",32:"Paused",64:"Queued",128:"Loaded"}
	Local bit,name,result
	For bit,name in Statused
		% (bit & num) and (result .= (result ? "`n" : "") name "`t" bit)
	Return result
}