Quantity Node — это тип Node переменной длины для представления физических величин, чисел, валют и литералов.
| Свойство | Описание |
|---|
| Переменная длина | 4~N слов (в зависимости от размера значения) |
| Явная единица | Основные/производные SI + не-SI (валюта, время и др.) |
| Поддержка масштаба | Приставки через степени 10 |
| Спец. литералы | Время (timestamp), строка (UTF-16), цвет (RGBA) |
| TID в конце | Свойство Node (согласованность с Entity Node) |
Применение: Object Triple Edge, участник Verb Edge, участник Event6, имя/метка сущности, представление времени и др.
Структура пакета
1st WORD (16 бит)
┌────────────────────┬────────────────────┐
│ Prefix │ Unit │
│ 10bit │ 6bit │
└────────────────────┴────────────────────┘
2nd WORD (16 бит)
┌──────┬──────┬──────┬────────────────────┐
│ Sign │ Size │ Type │ Scale │
│ 1bit │ 2bit │ 1bit │ 4bit │
├──────┴──────┴──────┴────────────────────┤
│ Reserved (8bit) │
└─────────────────────────────────────────┘
3rd+ WORD: Value (перемен., 1/2/4 слова по Size)
Last WORD (16 бит)
┌─────────────────────────────────────────┐
│ TID │
│ 16bit │
└─────────────────────────────────────────┘
| Поле | Биты | Размер | Описание |
|---|
| Prefix | 1-10 | 10 | 0001 000 010 (Quantity Node) |
| Unit | 11-16 | 6 | 64 кода единиц |
| Sign | 17 | 1 | 0=положит., 1=отрицат. |
| Size | 18-19 | 2 | Кол-во слов Value |
| Type | 20 | 1 | 0=целое, 1=с плав. точкой |
| Scale | 21-24 | 4 | Степень 10 (смещение 8) |
| Reserved | 25-32 | 8 | Резерв (код валюты при CURRENCY) |
Размер пакета по Size
| Size | Слов Value | Всего слов |
|---|
| 00 | 1 (16 бит) | 4 |
| 01 | 2 (32 бита) | 5 |
| 10 | 4 (64 бита) | 7 |
Коды единиц (6 бит = 64)
Основные единицы SI (0x00~0x06)
| Код | Единица | Символ | Величина |
|---|
| 0x00 | meter | m | Длина |
| 0x01 | kilogram | kg | Масса |
| 0x02 | second | s | Время |
| 0x03 | ampere | A | Сила тока |
| 0x04 | kelvin | K | Температура |
| 0x05 | mole | mol | Кол-во вещества |
| 0x06 | candela | cd | Сила света |
Производные единицы SI (0x07~0x1C)
| Код | Единица | Символ | Величина |
|---|
| 0x07 | hertz | Hz | Частота |
| 0x08 | newton | N | Сила |
| 0x09 | pascal | Pa | Давление |
| 0x0A | joule | J | Энергия |
| 0x0B | watt | W | Мощность |
| 0x0C | coulomb | C | Заряд |
| 0x0D | volt | V | Напряжение |
| 0x0E | farad | F | Ёмкость |
| 0x0F | ohm | Ω | Сопротивление |
| 0x10 | siemens | S | Проводимость |
| 0x11 | weber | Wb | Магнитный поток |
| 0x12 | tesla | T | Магнитное поле |
| 0x13 | henry | H | Индуктивность |
| 0x14 | celsius | °C | Температура |
| 0x15 | lumen | lm | Световой поток |
| 0x16 | lux | lx | Освещённость |
| 0x17 | becquerel | Bq | Радиоактивность |
| 0x18 | gray | Gy | Поглощ. доза |
| 0x19 | sievert | Sv | Эквив. доза |
| 0x1A | katal | kat | Катал. активность |
| 0x1B | radian | rad | Плоский угол |
| 0x1C | steradian | sr | Телесный угол |
Не-SI единицы (0x20~0x2F)
| Код | Единица | Применение |
|---|
| 0x20 | CURRENCY | Валюта (расширение кода) |
| 0x21 | percent | % (доля) |
| 0x22 | degree | ° (угол) |
| 0x23~0x28 | minute~year | Единицы времени |
| 0x29 | bit | Информация |
| 0x2A | byte | Информация |
| 0x2B~0x2F | COUNT~INDEX | Безразмерные числа |
Специальные литералы (0x30~0x3F)
| Код | Тип | Payload | Применение |
|---|
| 0x30 | TIMESTAMP_SEC | 2/4 слова | Unix timestamp (секунды) |
| 0x31 | TIMESTAMP_MS | 4 слова | Unix timestamp (миллисек.) |
| 0x32 | UTF16 | 2+N слов | Строка UTF-16 |
| 0x33 | RGBA | 2 слова | Цвет (32 бита) |
Scale (4 бита)
Степень 10. Применяется смещение 8. Формула: фактическое значение = Value × 10^(Scale - 8)
| Код | Значение | Приставка | Код | Значение | Приставка |
|---|
| 0000 | 10⁻⁸ | - | 1000 | 10⁰ (по умолч.) | - |
| 0010 | 10⁻⁶ | μ | 1001 | 10¹ | da |
| 0101 | 10⁻³ | m | 1011 | 10³ | k |
| 0110 | 10⁻² | c | 1110 | 10⁶ | M |
Расширение валют (Unit = 0x20)
При CURRENCY 8 бит Reserved используются как код валюты.
| Код | Валюта | ISO | Код | Валюта | ISO |
|---|
| 0x00 | Доллар США | USD | 0x05 | Южнокор. вона | KRW |
| 0x01 | Евро | EUR | 0x06 | Швейц. франк | CHF |
| 0x02 | Японская иена | JPY | 0x07 | Австрал. доллар | AUD |
| 0x03 | Британский фунт | GBP | 0x08 | Канад. доллар | CAD |
| 0x04 | Китайский юань | CNY | 0x80 | Bitcoin | BTC |
Примеры
«100 кг» → 4 слова
1st: [Prefix] + [0x01(kg)]
2nd: +, 1 слово, int, ×1 → 0x0800
3rd: 0x0064 (100)
4th: TID
Интерпретация: +100 × 10⁰ kg = 100 кг
«$2 500 000» → 4 слова (с масштабированием)
1st: [Prefix] + [0x20(CURRENCY)]
2nd: +, 1 слово, int, ×10³, USD → 0x0B00
3rd: 0x09C4 (2500)
4th: TID
Интерпретация: +2500 × 10³ USD = $2,500,000