49 lines
1.5 KiB
MQL5
49 lines
1.5 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| ExprBitwise.mq5 |
|
|
//| Copyright 2021, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
|
|
#property copyright "Copyright 2021, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
|
|
#define PRT(A) Print(#A, "=", (A))
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Script program start function |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart()
|
|
{
|
|
short v = ~1; // 0xfffe = -2
|
|
ushort w = ~1; // 0xfffe = 65534
|
|
|
|
short q = v << 5; // 0xffc0 = -64
|
|
ushort p = w << 5; // 0xffc0 = 65472
|
|
|
|
short r = q >> 5; // 0xfffe = -2
|
|
ushort s = p >> 5; // 0x07fe = 2046
|
|
|
|
uchar x = 154; // 10011010
|
|
uchar y = 55; // 00110111
|
|
|
|
uchar and = x & y; // 00010010 = 18
|
|
uchar or = x | y; // 10111111 = 191
|
|
uchar xor = x ^ y; // 10101101 = 173
|
|
|
|
PRT(v);
|
|
PRT(w);
|
|
|
|
PRT(q);
|
|
PRT(p);
|
|
|
|
PRT(x & y);
|
|
PRT(x | y);
|
|
PRT(x ^ y);
|
|
|
|
// MT5 bug?
|
|
// v is shown in debugger and printed as int (FFFFFFFE)
|
|
// C++ outputs FFFE
|
|
PrintFormat("%X %X", v, w);
|
|
}
|
|
//+------------------------------------------------------------------+
|