Из вашей картинки неясен тип signal_busy, если он у вас знаковый char, то так вполне может быть, т.к. сравнения происходят на уровне int, где как data_buf[i] таким и останется, а signal_busy будет расширен до 0xFFFFFFFE. И потому результ операции XOR между ними равен нулю не будет.