Сказать: «Компьютеры — это действительно удивительное устройство» — несложно, но весьма увлекательно думать о наборах схем, которые функционируют настолько хорошо, что на это уходят доли секунды. чтобы решить сложную логику, которую обычный человек, возможно, не сможет.
Нереально, насколько он стал способным🤖

Давайте исследуем, как он действительно делает все, что он делает. Что, если я скажу, что мы все уже знаем об этом, нам просто нужно установить связь между тем, что мы уже знаем.

Ну что, взволнован?👾

Позвольте мне задать более простой вопрос, скажем, как компьютер интерпретирует числа? Опять же, как сложить два числа?

Компьютерная система счисления:

Как мы знаем, двоичная система счисления используется компьютером.
Вы можете задаться вопросом, почему компьютеры используют двоичную систему счисления?
Или почему компьютеры конвертируют числа в двоичные и из них, а не просто используют нашу обычную десятичную систему счисления? Возможен ли также десятичный (с основанием 10) компьютер?

Да, фактически, самый первый электронный компьютер, ENIAC, был основан на числах с основанием 10. Даже аналитическая машина Чарльза Бэббиджа была полностью механической и использовала стандартные числа с основанием 10.🤨

Но зачем возиться с двоичным кодом?
Не было бы эффективнее хранить данные со сравнительно меньшим количеством схем (меньше цифр) для тех же вычислений?.
Да, будет, но основная причина была в том, схема с двоичным кодом потребляет меньше энергии, что приводит к снижению затрат, и позволяет избежать однозначного расчета.
Поскольку гораздо проще сделать схему, которая переключается между двумя состояниями, например, 0 и +5 В, чем, скажем, между 10 состояниями.
Электронные ворота с 2 состояниями переключаются между выключением и включением.

В то время как переключатель Multistate должен был бы переключаться между уровнями, которые намного ближе друг к другу, что потребовало бы значительного строгого контроля над задействованными токами и напряжениями. Более того, к тому времени точные уровни переключателей с несколькими состояниями могут дрейфовать, что в конечном итоге приведет к неисправности.

И я считаю, что USP любой машины — это уменьшение человеческих ошибок. Небольшой просчет может нанести большой вред любому бизнесу, который невозможно оценить.
Следовательно, мы не можем полагаться на машину, которая склонна к сбоям.

Кто-то справедливо сказал, что компьютер на самом деле не такой уж и умный.
Да, довольно эффективно и разумно взять какую-нибудь логическую схему и заставить ее выполнять ваши математические задания, но, в конце концов, он не выполняет никаких операций, которые 10-летний ребенок не смог. Единственная разница между компьютером и 10-летним ребенком в этом смысле — это уровень точности и эффективности, компьютеры не тормозят, не устают и не надоедают.😎

Компьютерная алгебра:

Для выполнения любого математического расчета необходимо знать математическую алгебру. И поскольку Компьютер сводит все числа к двоичной системе счисления, прежде чем выполнять над ними вычисления, а затем снова скрывает решение в соответствующей системе счисления.
Таким образом, мы приходим к тому, что компьютеру нужна алгебра, которая может работать с двоичными числами. .

По волшебству Джордж Буль уже сделал это для нас в 1847 году.
Он разработал метод алгебры двоичных значений, который принимает определенные входные данные и логически оценивает выходные данные. По сути, он дал нам логические инструменты, такие как И, ИЛИ, НЕ, XOR и т. д.
Если вам нужно обновить работу логических вентилей, нажмите здесь .

Вы, должно быть, усвоили, что побитовые операции являются самыми быстрыми и простыми операциями, чем арифметические, поскольку они работают на уровне отдельных битов и напрямую поддерживаются процессором. Теперь вы можете объяснить, почему побитовый алгоритм работает быстро и почему он поддерживается на уровне процессора, поскольку компьютер выполняет внутренние вычисления с двоичным номером. только.
Чтобы узнать больше о побитовых операторах, нажмите здесь.

Что если попросить написать функцию для сложения двух чисел, но без использования арифметических операторов?

Вам не нужно использовать оператор +, и, конечно же, никакие нативные методы тоже.
Как вы подойдете к этому вопросу?
Нужно знать, как компьютер работает внутри, чтобы оценить этот расчет, тогда, вероятно, это может занять пару минут, чтобы сформулировать логику.

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

Таким образом, чтобы написать функцию для сложения двух чисел, можно вывести из логической схемы половинного сумматора, которая принимает два входных параметра и передает оба в логический элемент XOR, который возвращает бит суммы, и когда тот же вход передается в логический элемент AND, он возвращает бит переноса.
Для исх. эта алгебра сложения выполняется на двоичном (битовом уровне), поэтому сумма и бит переноса оцениваются индивидуально. Например, если мы делаем 9 + 6 в десятичном виде, это дает 15 (5 как сумма и 1 как перенос, и в конечном итоге перенос оценивается, получая результат 15)

Правильная сумма, которая необходима, без бита переноса. Следовательно, мы должны добавить перенос в правильном позиционном обозначении и убедиться, что в окончательном решении нет переноса.

С точки зрения кода это можно записать следующим образом:

//half adder circuit logic  

function addTwoNumbers(num1, num2) {
//looping till carry bit isn't zero
    while (num2 !== 0) {

//applying bitwise XOR between two input to evaluate sum bit
      let sum = num1 ^ num2;

//applying bitwise AND between two input to get carry bit; and then
//left shift by 1 bit to make sure carry gets added at correct position
      let carry = (num1 & num2) << 1;

//reassigning the parameters with sum & carry bit,so final sum without
//carry gets returned as when num2 gets assigned 0 carry,while gets stopped
      [num1, num2] = [sum, carry];
    }

//when carry bit gets zero and gets reassigned into second param. 
//num1 will get returned with final addition value
    return num1;
 }
  
 addTwoNumbers(6, 9);

Следовательно, можно сказать, что вся сложная логика сводится к цифровой двоичной схеме, это опять же не что иное, как цифровые логические вентили, облегчающие алгебру в двоичной системе счисления.

Это все на данный момент!

Спасибо за прочтение.. 🥂