Теоретически, компиляторы выполнят такую оптимизацию за вас. На практике они не могут. Этот конкретный пример немного неуловим, потому что оба не эквивалентны, если только вы не сделаете некоторые предположения о value
и о том, является ли знаковая арифметика дополнением 2 на вашей целевой платформе.
Используйте то, что вы найдете более читабельным. Если и когда у вас есть доказательства того, что выполнение этого конкретного теста является критическим, используйте все, что дает вам наилучшую производительность. Лично я бы наверное написал:
if ((unsigned int)value >= 96U)
потому что это более интуитивно для меня, и с большей вероятностью хорошо справится с большинством компиляторов, с которыми я работал.