Неподписанные / подписанные арифметические задачи из перспективного учебника программиста

int x = random();
int y = random();

unsigned ux = (unsigned) x;
unsigned uy = (unsigned) y;

Для каждого из следующих выражений C вы должны указать, всегда ли выражение дает 1. Если оно всегда дает 1, опишите основные математические принципы. В противном случае приведите пример аргументов, которые приводят к 0.

A. (x<y) == (-x>-y) 
B. ((x+y)<<4) + y-x == 17*y+15*x
C. ~x+~y+1 == ~(x+y)
D. (ux-uy) == -(unsigned)(y-x)
E. ((x >> 2) << 2) <= x

На эти вопросы я понял, что только А может дать 0, а остальные всегда дают 1.

Я знаю, что это, вероятно, неправильно, и я не ищу прямых ответов, но я надеялся получить некоторые общие знания / советы о том, как подходить к этим проблемам.

У меня очень плохой профессор, и я пытался найти ресурсы в Интернете, но я не знаю, с чего начать и что искать. Я знаю основы арифметики и сдвига битов без знака / два дополнения, но я не знаю, как ее применять, чтобы найти встречные случаи для этих проблем.

Ответы на вопрос(1)

Ваш ответ на вопрос