Почему используют шестнадцатиричную систему счисления?
а вы посмотрите на ваши константы в бинарном виде и чем они отличаются и поймете почему
грубо говоря получается так;
OP_INSERT = 001 (01)
OP_UPDATE = 010 (02)
OP_DELETE = 100 (04)
и сочетания
OP_INSERT+OP_DELETE = 101 (5)
OP_INSERT+OP_UPDATE = 011 (3)
OP_INSERT+OP_UPDATE+OP_DELETE = 111 (7)
ну и т.п.
и со всем этим добром удобно использовать всякие and/or/not операции
п.1 чтобы все было единообразно, хоть и безобразно.
представь себе записи чисел 16-ого формата и циферок 10-ого формат будут произвольно чередоваться. большая вероятность того что человек допустит ошибку и запишет число не так как надо.
с другой стороны это всего лишь человекочитаемый текст, вполне можешь писать и "десятичные" циферки. компилятору на это до лампочки.
пока не попадешь в коллектив с четким следованием п.1 :) там и не на такое натянут.