Если с нулём или если одно число положительное, а другое отрицательное, но для этого надо знать тип данных(у знаковый первый бит отвечает за знак, а у беззнаковых он является частью значения) и каким-то образом отделять знаковый бит(скорее всего битовыми операциями)
В two's compliment нет знакового бита. Да, старший бит всегда будет выставлен, если число отрицательно, но там все немного сложнее.
Прелесть же two's compliment в том, что процессору в подавляющем числе случаев не важно работает он со знаковыми или беззнаковыми. В частности сравнение двух чисел по сути выполняется через вычисление их разности (в случае test и cmp результат выбрасывается, сохраняются только флаги) и анализ двух флагов zero и sign (это делает уже команда условного перехода).