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                   │
└─────────────────────────────────────────┘
ПолеБитыРазмерОписание
Prefix1-10100001 000 010 (Quantity Node)
Unit11-16664 кода единиц
Sign1710=положит., 1=отрицат.
Size18-192Кол-во слов Value
Type2010=целое, 1=с плав. точкой
Scale21-244Степень 10 (смещение 8)
Reserved25-328Резерв (код валюты при CURRENCY)

Размер пакета по Size

SizeСлов ValueВсего слов
001 (16 бит)4
012 (32 бита)5
104 (64 бита)7

Коды единиц (6 бит = 64)

Основные единицы SI (0x00~0x06)

КодЕдиницаСимволВеличина
0x00metermДлина
0x01kilogramkgМасса
0x02secondsВремя
0x03ampereAСила тока
0x04kelvinKТемпература
0x05molemolКол-во вещества
0x06candelacdСила света

Производные единицы SI (0x07~0x1C)

КодЕдиницаСимволВеличина
0x07hertzHzЧастота
0x08newtonNСила
0x09pascalPaДавление
0x0AjouleJЭнергия
0x0BwattWМощность
0x0CcoulombCЗаряд
0x0DvoltVНапряжение
0x0EfaradFЁмкость
0x0FohmΩСопротивление
0x10siemensSПроводимость
0x11weberWbМагнитный поток
0x12teslaTМагнитное поле
0x13henryHИндуктивность
0x14celsius°CТемпература
0x15lumenlmСветовой поток
0x16luxlxОсвещённость
0x17becquerelBqРадиоактивность
0x18grayGyПоглощ. доза
0x19sievertSvЭквив. доза
0x1AkatalkatКатал. активность
0x1BradianradПлоский угол
0x1CsteradiansrТелесный угол

Не-SI единицы (0x20~0x2F)

КодЕдиницаПрименение
0x20CURRENCYВалюта (расширение кода)
0x21percent% (доля)
0x22degree° (угол)
0x23~0x28minute~yearЕдиницы времени
0x29bitИнформация
0x2AbyteИнформация
0x2B~0x2FCOUNT~INDEXБезразмерные числа

Специальные литералы (0x30~0x3F)

КодТипPayloadПрименение
0x30TIMESTAMP_SEC2/4 словаUnix timestamp (секунды)
0x31TIMESTAMP_MS4 словаUnix timestamp (миллисек.)
0x32UTF162+N словСтрока UTF-16
0x33RGBA2 словаЦвет (32 бита)

Scale (4 бита)

Степень 10. Применяется смещение 8. Формула: фактическое значение = Value × 10^(Scale - 8)

КодЗначениеПриставкаКодЗначениеПриставка
000010⁻⁸-100010⁰ (по умолч.)-
001010⁻⁶μ100110¹da
010110⁻³m101110³k
011010⁻²c111010⁶M

Расширение валют (Unit = 0x20)

При CURRENCY 8 бит Reserved используются как код валюты.

КодВалютаISOКодВалютаISO
0x00Доллар СШАUSD0x05Южнокор. вонаKRW
0x01ЕвроEUR0x06Швейц. франкCHF
0x02Японская иенаJPY0x07Австрал. долларAUD
0x03Британский фунтGBP0x08Канад. долларCAD
0x04Китайский юаньCNY0x80BitcoinBTC

Примеры

«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