Арифметические и логические основы цифровых эвм Почему компьютер считает не так, как мы?
Итак, вы убедились, что арифметические операции над двоичными числами выполнять во много раз проще, чем над десятичными. Чего только стоит сведение анализа всевозможных ситуаций к четырем вариантам в случае двоичных чисел по сравнению со 100 ситуациями в десятичной системе, даже если учесть, что в двоичных числах разрядов примерно в три раза больше, чем в эквивалентных по величине десятичных числах.
Еще один аргумент в пользу двоичной системы можно извлечь из следующего рассуждения. Каждая ячейка оперативной памяти ЭВМ может быть использована для временного хранения какого-нибудь числа. И в этом смысле ее можно уподобить обычным конторским счетам. А теперь попробуем построить такие счеты, на которых можно было бы хранить числа, не превышающие 1000. В десятичной системе напрашивается конструкция, содержащая три проволочки (эквивалент трех цифр), на каждой из которых нанизано по 10 костяшек (эквивалент значение отдельной цифры). Для двоичных счетов потребуется уже 10 проволочек, так как самое большое десятиразрядное двоичное число всего на единицу меньше, чем 2 10 =1024. Но зато на каждой проволочке будет находиться лишь по две костяшки – значений у каждой двоичной цифры всего два. Сравним расход строительного материала, затраченного на создание указанных конструкций. Вы, конечно, понимаете, что основным материалом в счетах являются не деревянная рамка и не натянутые на ней проволочки. Мы вполне могли обойтись и без них, сложив костяшки, как первобытные бизнесмены, в отдельные кучки. Но на десятичные счеты пошло 30 костяшек, а на двоичные – всего 20.
Простота и экономичность двоичной системы по сравнению с привычной десятичной – аргументы весомые. Но есть еще один аргумент, связанный с принципом действия элементов, которые используются в ЭВМ. Дело в том, что большинство известных физических явлений имеют двоичную природу. Контакты электронного или электронно-механического реле могут быть замкнуты или разомкнуты. На бумажных перфокартах или перфолентах может быть пробито или не пробито отверстие, через которое соответственно пройдет или не пройдет луч света, фиксируемый фотодиодом. Полупроводниковый прибор (транзистор) может быть либо «открыт», либо «запрет». Конденсатор может быть или заряжен или разряжен. И таких примеров можно привести еще много. А вот найти в природе такое устройство, которое имело бы 10 фиксируемых разнонаправленных состояний, просто не удалось. Но даже если такие «десятичные» элементы и можно сконструировать, то создание соответствующего вычислительного устройства потребует несравненно больших затрат, чем «двоичная» ЭВМ.
Напомним, что двоичное представление чисел — это их запись в виде комбинации цифр 0 и 1. Бит — это модель устройства, которое может находиться только в двух состояниях: только из одного 0, или одной 1.
Цепочки бит в памяти компьютеров представляют собой различные числа, символы и любую другую информацию.
Группа из восьми битов называется байтом.
Байт — это очень удобная единица информации — не слишком большая и не слишком маленькая.
Содержимое одного байта может соответствовать 256 различным числам, поскольку общее количество различных комбинаций, в которых могут находиться восемь составляющих его битов, равно 256 =2 8 . С другой стороны, содержимое байта может интерпретироваться как буква или какой-нибудь другой символ, использующийся в текстах, если только предварительно пронумеровать все нужные символы. На самом деле, давно существует специальная таблица, где пронумерованы 256 стандартных символов. Эта таблица называется таблицей ASCII.
Итак, содержимое каждого байта можно интерпретировать либо как число, либо как символ. Работа в персональных компьютерах обычно происходит именно с байтами информации.
Шестнадцать битов подряд называются словом, а тридцать два бита подряд — двойным словом. Часто используются более крупные единицы информации: килобайт, или 1Кб — это 1024 байта (то есть два в десятой степени байт); мегабайт, 1Мб — это 1048576 байт (то есть два в двадцатой степени байт).
Оперативная память компьютера содержит программы и различные данные во время работы компьютера.
Оперативную память компьютера можно рассматривать как последовательность байтов, каждый из которых имеет собственный номер. Этот номер называется адресом данного байта.
Тест по информатике Что умеет компьютер для 5 класса
Тест по информатике Что умеет компьютер для 5 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 10 заданий с выбором ответа.
1 вариант
1. Выберите правильное утверждение.
Информатика — это наука
1) об изучении возможных способов передачи, хранения и обработки информации
2) о вычислениях
3) об устройстве компьютера
4) о создании документов, презентаций, компьютерных игр
2. Где можно обойтись без компьютера?
1) в банке
2) в школе
3) в огороде
4) в больнице
3. Что было вместо электронного журнала в школе, когда компьютеров не было?
1) учебники
2) табель успеваемости
3) журнал у директора школы
4) дневник у каждого ученика и журнал у каждого учителя
4. Какую работу выполняет компьютер в бухгалтерии завода?
1) учитывает расходы
2) учитывает доходы
3) учитывает доходы и расходы
4) ничего из вышеперечисленного
5. Чем компьютер «лучше» человека?
1) компьютер не болеет
2) компьютер считает быстрее
3) компьютер не спит
4) все утверждения верны
6. Выберите неверное утверждение.
Человек «главнее» компьютера, потому что
1) человек готовит данные для компьютера
2) человек помнит больше информации
3) человек пишет программы для компьютера
4) человек может выключить компьютер
7. Информация, которую компьютер обрабатывает, называется
1) базой
2) текстом
3) данными
4) формулами
8. Что в компьютере обрабатывает информацию?
1) программы
2) механизмы
9. Много ли информации успевает обработать компьютер за 1 секунду?
1) да, очень много
2) в 2 раза больше, чем человек
3) меньше, чем человек
10. Имеет ли компьютер образное мышление?
2 вариант
1. Какая наука изучает способы передачи хранения и обработки информации?
1) математика
2) информатика
3) логика
2. Чем не пользовался бухгалтер, когда компьютеров не было?
1) счётами
2) калькулятором
3) журналом бухгалтера
4) нотной тетрадью
3. Где можно обойтись без компьютера?
1) на заводе
2) в больнице
3) в поле
4) в школе
4. Какую работу выполняет компьютер в банке?
1) хранит в памяти данные обо всех клиентах банка
2) считает, сколько денег у каждого клиента в банке
3) оба утверждения верны
4) ничего из вышеперечисленного не верно
5. Что компьютер умеет делать лучше человека? Выберите неверное утверждение.
1) считает быстрее
2) больше и дольше помнит
3) может работать без «питания»
4) долго работает и не устаёт
6. Выберите верное утверждение.
Человек «главнее» компьютера, потому что
1) человек не ошибается
2) человек помнит больше информации
3) человек пишет программы для компьютера
4) человек не устаёт
7. Чем помогает компьютер человеку?
1) быстрее считает
2) хранит информацию
3) быстро находит информацию
4) все ответы верные
8. Как называется информация, которая попадает в компьютер?
1) банк данных
2) печатный документ
3) текст
4) данные
9. Быстро ли считает компьютер?
1) медленнее, чем человек
2) да, очень быстро
3) в 3 раза быстрее, чем человек
10. Если компьютер считает не так, как надо, то почему?
1) компьютер так «решил»
2) человек сделал ошибку в программе
3) это никому не известно
4) такого не бывает
Ответы на тест по информатике Что умеет компьютер для 5 класса
1 вариант
1-1
2-3
3-4
4-3
5-4
6-2
7-3
8-1
9-1
10-2
2 вариант
1-2
2-4
3-3
4-3
5-3
6-3
7-4
8-4
9-2
10-2
Если компьютер считает не так, как надо, то почему?
Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.
решение вопроса
Связанных вопросов не найдено
- Все категории
- экономические 43,679
- гуманитарные 33,657
- юридические 17,917
- школьный раздел 612,449
- разное 16,911
Популярное на сайте:
Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах.
Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте.
Как быстро и эффективно исправить почерк? Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.
Как научится говорить грамотно и правильно? Общение на хорошем, уверенном и естественном русском языке является достижимой целью.
Excel неправильно считает. Почему?
Часто при вычислении разницы двух ячеек в Excel можно видеть, что она не равна нулю, хотя числа одинаковые. Например, в ячейках A1 и B1 записано одно и тоже число 10,7 , а в C1 мы вычитаем из одного другое:
И самое странное то, что в итоге мы не получаем 0! Почему?
И еще одна ситуация — я её называю «Куда пропала копейка?!». На скрине ниже изображена достаточно частая ситуация в Excel:
Слева числа получены формулами и сложены в единую сумму при помощи функции СУММ (SUM) , а правее они же посчитаны на калькуляторе. Как видно — суммы различаются на копейку. На самом деле различаться суммы в итоге могут и более чем на копейку.
Разберем причины подобного поведения и главное — как эту проблему можно решить.
Причина очевидная — формат ячеек
Сначала самый очевидный ответ: если идет сравнение значений двух ячеек, то необходимо убедиться, что числа там действительно равны и не округлены форматом ячеек. Например, если взять те же числа из примера выше, то если выделить их -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 7:
Теперь все становится очевидным — числа отличаются и были просто округлены форматом ячеек. И естественно не могут быть равны. В данном случае оптимальным будет понять почему числа именно такие, а уже потом принимать решение. И если уверены, что числа надо реально округлять до десятых долей — то можно применить в формуле функцию ОКРУГЛ:
=ОКРУГЛ( B1 ;1)-ОКРУГЛ( A1 ;1)=0
=ROUND(B1,1)-ROUND(A1,1)=0
Но как быть, если таких формул десять, двадцать и более? Не прописывать же вручную для каждой формулу ОКРУГЛ. Можно использовать одну из функций моей надстройки MulTEx, которая двумя кликами мыши все сделает за вас. Достаточно будет выделить все ячейки с «неверными» числами, которые надо округлить, перейти на вкладку MulTEx -группа Ячейки/Диапазоны —Ячейки —Функции и выбрать Округлить (см. подробное описание функции). Указать количество знаков 2 и все. Там, где были формулы, будет добавлена функция ОКРУГЛ, а где реальные числа — будет произведено округление.
Но есть и более кардинальный метод , если сторонние утилиты и надстройки использовать нельзя или нет желания:
- Excel 2007:Кнопка офис —Параметры Excel (Excel options) —Дополнительно (Advanced) —Задать точность как на экране (Set precision as displayed)
- Excel 2010:Файл (File) —Параметры (Options) —Дополнительно (Advanced) —Задать точность как на экране (Set precision as displayed)
- Excel 2013 и выше:Файл (File) —Параметры (Options) —Дополнительно (Advanced) —Задать указанную точность (Set precision as displayed)
Это запишет все числа на всех листах книги ровно так, как они отображены форматом ячеек. Данное действие лучше выполнять на копии книги, т.к. оно приводит все числовые данные во всех листах книги к тому виду, как они отображены на экране. Т.е. если само число содержит 5 десятичных разрядов, а форматом ячеек задан только 1 — то после применения данной опции число будет округлено до 1 знака после запятой. При этом отменить данную операцию нельзя, если только не закрыть книгу без сохранения.
Причина программная
Но нередко в Excel можно наблюдать более интересный «феномен»: разница двух дробных чисел, полученная формулой не равна точно такому же числу, записанному напрямую в ячейку. Для примера, запишите в ячейку такую формулу:
=10,8-10,7=0,1
по виду результатом должен быть ответ ИСТИНА (TRUE) . Но по факту будет ЛОЖЬ (FALSE) . И этот пример не единственный — такое поведение Excel далеко не редкость при вычислениях. Его можно встретить и в менее явной форме — когда вычисления основаны на значении других ячеек, которые тоже в свою очередь вычисляются формулами и т.д. Но причина во всех случаях одна.

Почему с виду одинаковые числа не равны?
Сначала разберемся почему Excel считает приведенное выше выражение ложным. Ведь если вычесть из 10,8 число 10,7 — в любом случае получится 0,1 . Значит где-то по пути что-то пошло не так. Запишем в отдельную ячейку левую часть выражения: =10,8-10,7 . В ячейке появится 0,1 . А теперь выделяем эту ячейку -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 15:
и теперь видно, что на самом деле в ячейке не ровно 0,1 , а 0,100000000000001 . Т.е. в 15 значащем разряде у нас появился «хвостик» в виде лишней единицы.
А теперь будем разбираться откуда этот «хвостик» появился, ведь и логически и математически его там быть не должно. Рассказать я постараюсь очень кратко и без лишних заумностей — их на эту тему при желании можно найти в интернете немало.
Все дело в том, что в те далекие времена(это примерно 1970-е годы), когда ПК был еще чем-то вроде экзотики, не было единого стандарта работы с числами с плавающей запятой(дробных, если по простому). Зачем вообще этот стандарт? Затем, что компьютерные программы видят числа по своему, а дробные так вообще со статусом «все сложно». И при этом одно и то же дробное число можно представить по-разному и обрабатывать операции с ним тоже. Поэтому в те времена одна и та же программа, при работе с числами, могла выдать различный результат на разных ПК. Учесть все возможные подводные камни каждого ПК задача не из простых, поэтому в один прекрасный момент началась разработка единого стандарта для работы с числами с плавающей запятой. Опуская различные подробности, нюансы и интересности самой истории скажу лишь, что в итоге все это вылилось в стандарт IEEE754. А в соответствии с его спецификацией в десятичном представлении любого числа допускаются ошибки в 15-м значащем разряде. Что и приводит к неизбежным ошибкам в вычислениях. Чаще всего это можно наблюдать именно в операциях вычитания, т.к. именно вычитание близких между собой чисел ведет к потере значимых разрядов.
Подробнее про саму спецификацию так же можно узнать в статье Microsoft: Результаты арифметических операций с плавающей точкой в Excel могут быть неточными
Вот это как раз и является виной подобного поведения Excel. Хотя справедливости ради надо отметить, что не только Excel, а всех программ, основанных на данном стандарте. Конечно, напрашивается логичный вопрос: а зачем же приняли такой глючный стандарт? Я бы сказал, что был выбран компромисс между производительностью и функциональностью. Хотя возможно, были и другие причины.
Куда важнее другое: как с этим бороться?
По сути никак, т.к. это программная «ошибка». И в данном случае нет иного выхода, как использовать всякие заплатки вроде ОКРУГЛ и ей подобных функций. При этом ОКРУГЛ здесь надо применять не как в было продемонстрировано в самом начале, а чуть иначе:
=ОКРУГЛ( 10,8 — 10,7 ;1)=0,1
=ROUND(10.8-10.7,1)=0,1
т.е. в ОКРУГЛ мы должны поместить само «глючное» выражение, а не каждый его аргумент отдельно. Если поместить каждый аргумент — то эффекта это не даст, ведь проблема не в самом числе, а в том, как его видит программа. И в данном случае 10,8 и 10,7 уже округлены до одного разряда и понятно, что округление отдельно каждого числа не даст вообще никакого эффекта. Здесь и еще один нюанс — вполне достаточно, зная эту особенность, округлить до 14 знаков и проблема тоже исчезнет. В чем здесь плюс — как правило очень мало задач для решения требуют 15 знаков после запятой и этот 15-ый можно просто «игнорировать», но при этом не убирать более значимые разряды(ведь не всегда известно до какого разряда можно округлять без потерь):
=ОКРУГЛ( 10,8 — 10,7 ;14)=0,1
=ROUND(10.8-10.7,14)=0,1
Можно, правда, выкрутиться и иначе. Умножить каждое число на некую величину(скажем на 1000, чтобы 100% убрать знаки после запятой) и после этого производить вычитание и сравнение:
=((10,8*1000)-(10,7*1000))/1000=0,1
Хочется верить, что хоть когда-нибудь описанную особенность стандарта IEEE754 Microsoft сможет победить или хотя бы сделать заплатку, которая будет производить простые вычисления не хуже 50-рублевого калькулятора 🙂