Введите код, чтобы определить, делится ли число на 3. Вход в функцию представляет собой бит одиночный, 0 или 1, а выход должен быть 1, если число, полученное до сих пор, является двоичное представление числа, делящегося на 3, в противном случае - 0.
Примеры:
input "0": (0) output 1
inputs "1,0,0": (4) output 0
inputs "1,1,0,0": (6) output 1
Это основано на вопросе интервью. Я прошу рисовать логические ворота, но поскольку это stackoverflow, я соглашусь с любым языком кодирования. Бонусные баллы за аппаратную реализацию (verilog и т.д.).
Часть a (легко):. Первый вход - это MSB.
Часть b (немного сложнее): Первый ввод - это LSB.
Часть c (трудная): Какая из них быстрее и меньше, (a) или (b)? (Не теоретически в смысле Big-O, но практически быстрее/меньше.) Теперь возьмите более медленный/больший и сделайте его быстрым/маленьким, чем более быстрый/меньший.