Обоснование отрицательных целых чисел CBOR
Меня смущает, почему CBOR выбирает кодирование отрицательных целых чисел в виде двоичных чисел без знака со значением, определенным как -1, минус значение без знака, например, вместо представления обычного дополнения до двух. Есть ли очевидное преимущество, которое я упускаю, кроме увеличенного отрицательного диапазона (который, IMO, имеет сомнительную ценность в сравнении с повышенной сложностью)?
1 ответ
Преимущества:
- Существует только один разрешенный тип кодирования для каждого целочисленного значения, поэтому все кодеры будут выдавать согласованный вывод. Если кодеры используют самую короткую кодировку для каждого значения, как рекомендовано спецификацией, они будут выдавать идентичные выходные данные.
- Выбор неотложных числовых полей проще для неотрицательных чисел, чем для отрицательных чисел со знаком, и CBOR стремится к крошечным устройствам IOT для быстрой передачи данных.
- Он вмещает вдвое больше значений в каждую ширину поля целочисленного кодирования, что делает данные более компактными. (Было бы еще более компактно, если бы целочисленные кодировки не перекрывались, но это было бы значительно сложнее.)
- Он может обрабатывать вдвое большее отрицательное значение, прежде чем потребуется расширение bignum.