В сравнении двух чисел мы обычно используем оператор " if ", который при истинности (по сути единица) выражения запускает код, который находится внутри, а при ложном пропускает этот код. Вроде всё просто сравнение, но как компьютер понимает что два числа равны или больше, или меньше и как работает этот оператор " if "?
В ассемблере есть такая команда CMP, которая сравнивает два числа, там же сравнивание идёт по следующему алгоритму:
CMP A, B
В ассемблере есть такая команда CMP, которая сравнивает два числа, там же сравнивание идёт по следующему алгоритму:
CMP A, B
- Из A вычитается B
- Если результат равен нулю, то A=B
- Если числа равны, то устанавливается флаг ZF
- Если ZF = 1, то числа равны
- Если ZF = 0, то числа НЕ равны
int a;
int b;
int c;
a = 5;
b = 5;
c = 0;
if ((a == 5) && (b == 5)) {
c = 12;
}
else { c = 0; }
Логический знак && можно считать, как знак умножения. Мы можем в принципе преобразовать эту функцию в одну формулу:
c = 12 * (!(a - 5) * !(b - 5));
Знак восклицания работает следующим образом любое число кроме нуля преобразует в ноль, а ноль в единицу.
Но это лишь формула, которую я подогнал для данного сравнения и то сомнительно. Как же в программировании компилятор преобразует if и логические знаки? Где можно почитать об этом?
Но это лишь формула, которую я подогнал для данного сравнения и то сомнительно. Как же в программировании компилятор преобразует if и логические знаки? Где можно почитать об этом?
Принятый ответ
Почитай про boolean и как работают его операции. Он не связан с числовыми типами (кроме Си, но не будем трогать магию слабой типизации), советую почитать про типизацию и приведение типов в C++. Дальше можно переходить к тому, что такое int32/64, а дальше ieee float
Крайне не рекомендую объединять логические и численные операции - разбираться в этом потом очень больно, даже самому себе через пару месяцев
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. ScorpioT1000
Ред. PT153