§12. Восьмеричная система счисления | Задачи (курс pol 136 ч.)
Содержание урока
§12. Восьмеричная система счисленияВосьмеричная система
Алгоритм перевода восьмеричного числа в двоичную систему счисления
Алгоритм перевода двоичного числа в восьмеричную систему счисления
Вопросы и задания
Задачи
§13. Шестнадцатеричная система счисления§12. Восьмеричная система счисления
Задачи
1. Переведите числа 49, 53, 64, 150, 266 в восьмеричную и двоичную системы счисления.
2. Переведите числа 1238, 2348, 3458, 4568 и 5678 в десятичную и двоичную системы счисления.
3. Запишите числа 1011110012, 101101002, 10000112, 101010102 в восьмеричной и десятичной системах счисления.
4. Вычислите значения следующих выражений:
а) 3538 + 7368;
б) 13538 + 7778;
в) 1153
г) 1538 — 6628.
5. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной и десятичной системах счисления:
а) 458 + 10101102;
б) 2718 + 111101002;
в) 1101112 + 1358;
г) 10 + 108 • 102;
д) 123 + 128 • 112;
е) 1538 — 16 • 1012;
ж) 158 • 1102;
з) 508 • 218;
и) 1348 : 101112;
к) 2148 : 11102.
*6. Переведите число 12,5 в восьмеричную систему счисления.
Следующая страница §13. Шестнадцатеричная система счисления
Cкачать материалы урока
§13. Шестнадцатеричная система счисления | Задачи (курс pol 136 ч.)
Содержание урока
§12. Восьмеричная система счисления §13. Шестнадцатеричная система счисленияШестнадцатеричная система счисления
Алгоритм перевода шестнадцатеричного числа в двоичную систему счисления
Алгоритм перевода двоичного числа в шестнадцатеричную систему счисления
Вопросы и задания
Задачи
§13. Шестнадцатеричная система счисления
Задачи
1. Переведите в двоичную и восьмеричную системы числа 7F1A16, С73В16, 2FE116, А11216.
2. Переведите в двоичную и шестнадцатеричную системы числа 61728, 53418, 77118, 12348.
3. Переведите в восьмеричную и шестнадцатеричную системы числа
а) 11101111010102;
б) 10101011010101102;
в) 1111001101111101012;
г) 1101101101011111102.
4. Переведите числа 29, 43, 54, 120, 206 в шестнадцатеричную, восьмеричную и двоичную системы счисления.
5. Переведите числа 738, 1348, 2458, 3568 и 4678 в шестнадцатеричную, десятичную и двоичную системы счисления.
6. Запишите числа 101101012, 11101002, 10001112, 101111102 в шестнадцатеричной, восьмеричной и десятичной системах счисления.
7. Вычислите значения следующих выражений:
а) 3AF16 + 1СВЕ16;
б) 1ЕА16 + 7D716;
в) А8116 + 37716;
г) 1CFB16 — 22F16;
д) 22F16 — CFB16;
е) 1АВ16 — 2CD16.
8. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 4F16 + 1111102;
б) 5А16 + 1010111
2;
в) 2568 + 2С16;
г) 1101112 + 1358;
д) 1216 + 128 • 112;
е) 358 + 2С16 • 1012.
9. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 1516 • 1102;
б) 2А16 • 128;
в) 3416 : 328;
г) 7408 : 1816.
*10. Переведите числа 49,6875 и 52,9 в шестнадцатеричную систему счисления.
Следующая страница §12. Восьмеричная система счисления
Cкачать материалы урока
Шестнадцатеричная система счисления — Студопедия.Нет
Шестнадцатеричная система счисления (позиционная система с основанием 16) широко используется для записи адресов и содержимого ячеек памяти компьютера. Её алфавит содержит 16 цифр, вместе с 10 арабскими цифрами (0..9) используются первые буквы латинского алфавита:
А = 10, В = 11, C = 12, D = 13, Е = 14, F = 15.
Таким образом, старшая цифра в шестнадцатеричной системе — F.
Для перевода чисел из десятичной системы в шестнадцатеричную используют алгоритм деления на 16 и взятия остатков. Важно не забыть, что все остатки, большие 9, нужно заменить на буквы:
Для обратного перехода значение каждой цифры умножают на 16 в степени, равной её разряду, и полученные значения складывают:
Можно также использовать схему Горнера:
1ВС16 = (1 • 16 + 11) • 16 + 12 = 27 • 16 + 12 = 444.
Основания двоичной и шестнадцатеричной систем связаны соотношением 24 = 16, поэтому можно переводить числа из шестнадцатеричной системы в двоичную напрямую. Алгоритмы перевода чисел из шестнадцатеричной системы в двоичную и обратно полностью аналогичны соответствующим алгоритмам для восьмеричной системы. Каждая шестнадцатеричная цифра представляется в виде тетрады (группы из четырёх двоичных цифр) (табл. 2.6).
Алгоритм перевода шестнадцатеричного числа в двоичную систему счисления
1. Перевести значение каждой цифры (отдельно) в двоичную систему. Записать результат в виде тетрады, добавив, если нужно, нули в начало (см. табл. 2.6).
2. Соединить тетрады в одно «длинное» двоичное число.
Например, переведём в двоичную систему число 5Е12316 (здесь показана разбивка на тетрады):
5Е12316 = 101 1110 0001 0010 00112.
Обратите внимание, что для цифр, меньших 8 (кроме первой), результат перевода в двоичную систему нужно дополнить старшими нулями до 4 знаков.
Алгоритм перевода двоичного числа в шестнадцатеричную систему счисления
1. Разбить двоичное число на тетрады, начиная справа.
В начало самой первой тетрады добавить слева нули, если это необходимо.
2. Перевести каждую тетраду (отдельно) в шестнадцатеричную систему счисления.
3. Соединить полученные цифры в одно «длинное» число.
Например: 10000100001010101111002 = 10 0001 0000 1010 1011 11002 = 210АВС16.
Шестнадцатеричная система оказалась очень удобной для записи значений ячеек памяти. Байт в современных компьютерах представляет собой 8 соседних битов, т. е. две тетрады. Таким образом, значение байтовой ячейки можно записать как две шестнадцатеричные цифры:
Каждый полубайт (4 бита) «упаковывается» в одну шестнадцатеричную цифру. Благодаря этому замечательному свойству, шестнадцатеричная система в сфере компьютерной техники практически полностью вытеснила восьмеричную1.
1 Начиная с 1964 года, когда шестнадцатеричная система стала широко использоваться в документации на новый компьютер IBM/360.
Перевод из шестнадцатеричной системы в восьмеричную (и обратно) удобнее выполнять через двоичную систему. Можно, конечно, использовать и десятичную систему, но в этом случае объём вычислений будет значительно больше.
При выполнении сложения нужно помнить, что в системе с основанием 16 перенос появляется тогда, когда сумма в очередном разряде превышает 15. Удобно сначала переписать исходные числа, заменив все буквы на их численные значения:
При вычитании заём из старшего разряда равен 1016 = 16, а все «промежуточные» разряды заполняются цифрой F — старшей цифрой системы счисления:
Если нужно работать с числами, записанными в разных системах счисления, их сначала переводят в какую-нибудь одну систему. Например, пусть требуется сложить 538 и 5616 и записать результат в двоичной системе счисления. Здесь можно выполнять сложение в двоичной, восьмеричной, десятичной или шестнадцатеричной системе. Переход к десятичной системе, а потом перевод результата в двоичную трудоёмок. Практика показывает, что больше всего ошибок делается при вычислениях в двоичной системе, поэтому лучше выбирать восьмеричную или шестнадцатеричную систему. Например, переведём число 538 в шестнадцатеричную систему через двоичную:
538 = 101 0112 = 10 10112 = 2В16.
Теперь сложим числа в 16-ричной системе:
2В16 + 5616 = 8116
и переведём результат в двоичную систему:
8116 = 1000 00012.
Вопросы и задания
1. Какие цифры используются в шестнадцатеричной системе? Сколько их?
2. Почему появилась необходимость использовать латинские буквы?
3. Сформулируйте алгоритмы перевода чисел из шестнадцатеричной системы счисления в двоичную и обратно.
4. Какое минимальное основание должно быть у системы счисления, чтобы в ней могли быть записаны числа 123, 4АВ, 9АЗ и 8455?
Задачи
1. Переведите в двоичную и восьмеричную системы числа 7F1A16, С73В16, 2FE116, А11216.
2. Переведите в двоичную и шестнадцатеричную системы числа 61728, 53418, 77118, 12348.
3. Переведите в восьмеричную и шестнадцатеричную системы числа
а) 11101111010102;
б) 10101011010101102;
в) 1111001101111101012;
г) 1101101101011111102.
4. Переведите числа 29, 43, 54, 120, 206 в шестнадцатеричную, восьмеричную и двоичную системы счисления.
5. Переведите числа 738, 1348, 2458, 3568 и 4678 в шестнадцатеричную, десятичную и двоичную системы счисления.
6. Запишите числа 10110101
7. Вычислите значения следующих выражений:
а) 3AF16 + 1СВЕ16;
б) 1ЕА16 + 7D716;
в) А8116 + 37716;
г) 1CFB16 — 22F16;
д) 22F16 — CFB16;
е) 1АВ16 — 2CD16.
8. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 4F16 + 1111102;
б) 5А16 + 10101112;
в) 2568 + 2С16;
г) 1101112 + 1358;
д) 1216 + 128 • 112;
е) 358 + 2С16 • 1012.
9. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 1516 • 1102;
б) 2А16 • 128;
в) 3416 : 328;
г) 7408 : 1816.
*10. Переведите числа 49,6875 и 52,9 в шестнадцатеричную систему счисления.
Задача №16. Поиск основания системы по окончанию числа, уравнения и различные кодировки, арифметические действия в различных системах.
Автор — Лада Борисовна Есакова.
Перед тем, как приступить к решению задач, нам нужно понять несколько несложных моментов.
Рассмотрим десятичное число 875. Последняя цифра числа (5) – это остаток от деления числа 875 на 10. Последние две цифры образуют число 75 – это остаток от деления числа 875 на 100. Аналогичные утверждения справедливы для любой системы счисления:
Последняя цифра числа – это остаток от деления этого числа на основание системы счисления.
Последние две цифры числа – это остаток от деления числа на основание системы счисления в квадрате.
Например, . Разделим 23 на основание системы 3, получим 7 и 2 в остатке (2 – это последняя цифра числа в троичной системе). Разделим 23 на 9 (основание в квадрате), получим 18 и 5 в остатке (5 = ).
Вернемся опять к привычной десятичной системе. Число = 100000. Т.е. 10 в степени k– это единица и k нулей.
Аналогичное утверждение справедливо для любой системы счисления:
Основание системы счисления в степени k в этой системе счисления записывается как единица и k нулей.
Например, .
1. Поиск основания системы счисления
Пример 1.
В системе счисления с некоторым основанием десятичное число 27 записывается в виде 30. Укажите это основание.
Решение:
Обозначим искомое основание x. Тогда .Т.е. x = 9.
Ответ: 9
Пример 2.
В системе счисления с некоторым основанием десятичное число 13 записывается в виде 111. Укажите это основание.
Решение:
Обозначим искомое основание x. Тогда
Решаем квадратное уравнение, получаем корни 3 и -4. Поскольку основание системы счисления не может быть отрицательным, ответ 3.
Ответ: 3
Пример 3
Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 29 оканчивается на 5.
Решение:
Если в некоторой системе число 29 оканчивается на 5, то уменьшенное на 5 число (29-5=24) оканчивается на 0. Ранее мы уже говорили, что число оканчивается на 0 в том случае, когда оно без остатка делится на основание системы. Т.е. нам нужно найти все такие числа, которые являются делителями числа 24. Эти числа: 2, 3, 4, 6, 8, 12, 24. Заметим, что в системах счисления с основанием 2, 3, 4 нет числа 5 (а в формулировке задачи число 29 оканчивается на 5), значит остаются системы с основаниями: 6, 8, 12,
Ответ: 6, 8, 12, 24
Пример 4
Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 71 оканчивается на 13.
Решение:
Если в некоторой системе число оканчивается на 13, то основание этой системы не меньше 4 (иначе там нет цифры 3).
Уменьшенное на 3 число (71-3=68) оканчивается на 10. Т.е. 68 нацело делится на искомое основание системы, а частное от этого при делении на основание системы дает в остатке 0.
Выпишем все целые делители числа 68: 2, 4, 17, 34, 68.
2 не подходит, т.к. основание не меньше 4. Остальные делители проверим:
68:4 = 17; 17:4 = 4 (ост 1) – подходит
68:17 = 4; 4:17 = 0 (ост 4) – не подходит
68:34 = 2; 2:17 = 0 (ост 2) – не подходит
68:68 = 1; 1:68 = 0 (ост 1) – подходит
Ответ: 4, 68
2. Поиск чисел по условиям
Пример 5
Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11?
Решение:
Для начала выясним, как выглядит число 25 в системе счисления с основанием 4.
. Т.е. нам нужно найти все числа, не больше , запись которых оканчивается на 11. По правилу последовательного счета в системе с основанием 4,
получаем числа и . Переводим их в десятичную систему счисления:
Ответ: 5, 21
3. Решение уравнений
Пример 6
Решите уравнение:
Ответ запишите в троичной системе (основание системы счисления в ответе писать не нужно).
Решение:
Переведем все числа в десятичную систему счисления:
Квадратное уравнение имеет корни -8 и 6. (т.к. основание системы не может быть отрицательным). .
Ответ: 20
4. Подсчет количества единиц (нулей) в двоичной записи значения выражения
Для решения этого типа задач нам нужно вспомнить, как происходит сложение и вычитание «в столбик»:
При сложении происходит поразрядное суммирование записанных друг под другом цифр, начиная с младших разрядов. В случае, если полученная сумма двух цифр больше или равна основанию системы счисления, под суммируемыми цифрами записывается остаток от деления этой суммы на основание системы, а целая часть от деления этой суммы на основание системы прибавляется к сумме следующих разрядов.
При вычитании происходит поразрядное вычитание записанных друг под другом цифр, начиная с младших разрядов. В случае, если первая цифра меньше второй, мы «занимаем» у соседнего (большего) разряда единицу. Занимаемая единица в текущем разряде равна основанию системы счисления. В десятичной системе это 10, в двоичной 2, в троичной 3 и т.д.
Пример 7
Сколько единиц содержится в двоичной записи значения выражения: ?
Решение:
Представим все числа выражения, как степени двойки:
В двоичной записи двойка в степени n выглядит, как 1 и n нулей. Тогда суммируя и , получим число, содержащее 2 единицы:
Теперь вычтем из получившегося числа 10000. По правилам вычитания занимаем у следующего разряда.
Теперь прибавляем к получившемуся числу 1:
Видим, что у результата 2013+1+1=2015 единиц.
Ответ: 2015.
Подготовка к ЕГЭ по информатике (задание 4) по теме Системы счисления — ЕГЭ
информатика егэ задания системы счисления в
Вариант 1 (системы счисления)
Дано: а = 306 8 , b = C8 16 . Какое из чисел х, записанных в двоичной системе, отвечает неравенству a
2. Ч ему равна сумма чисел BA 16 и AB 16 ? Результат запишите в восьмеричной системе счисления.
3. Сколько нулей в двоичной записи десятичного числа 1020?
4. Переведите в двоичную систему десятичное число 57.
5. Сколько единиц в двоичной записи десятичного числа 127?
6. Для каждого из перечисленных ниже десятичных чисел построили двоичную запись. Укажите число, двоичная запись которого содержит наибольшее количество единиц.
7. Чему равна сумма чисел 43 8 и 56 16 ?
8. Дано: а = 21 10 , b = 23 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию b
9. Сколько единиц в двоичной записи десятичного числа 1025?
Вариант 2 (системы счисления)
Переведите в двоичную систему десятичное число 49.
2. Дано A = 147 8 , B = 69 16 . Какое из чисел C , записанных в двоичной системе, отвечает условию A?
3. Дано N = 65 8 , M = 37 16 . Какое из чисел K, записанных в двоичной системе, отвечает условию N
4. Как выглядит число В0С 16 в двоичной системе счисления?
5. Дано: а = 16 10 , b = 22 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию а
6. Вычислите сумму чисел x и у, при х = D5 16 , у = 57 8 .
Результат представьте в двоичной системе счисления.
7. Дано: а = 32 10 , b = 35 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию b
8. Сколько значащих нулей в двоичной записи десятичного числа 48?
9. Дано N =75 8 , M =3F 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N K M ?
Вариант 3 (системы счисления)
1. Чему равна сумма чисел 57 8 и 46 16 ?
2. Дано N = 227 8 , M = 99 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N?
3. Наибольшим десятичным числом, которое в двоичной системе счисления можно записать с помощью трёх цифр, является число
4. Вычислите сумму чисел x и у, при х = D5 16 , у = 57 8 .
Результат представьте в двоичной системе счисления.
5. Для каждого из перечисленных ниже десятичных чисел построили двоичную запись. Укажите число, двоичная запись которого содержит ровно 3 единицы.
6. Сколько единиц в двоичной записи десятичного числа 307?
7. Дано X = E7 16 , Y = 351 8 . Какое из чисел Z, записанных в двоичной системе, отвечает условию X
8. Двоичным эквивалентом десятичного числа 99 является:
9. Вычислите сумму чисел x и у при х = 77 10 , у = 77 8 . Результат представьте в двоичной системе счисления.
Вариант 4 (системы счисления)
1. Дано N =75 8 , M =3F 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N K M ?
2. Значение выражения 11 16 + 11 8 : 11 2 в двоичной системе счисления равно
3. Дано А=9D 16 , B=237 8 . Какое из чисел C, записанных в двоичной системе, отвечает условию A
4. Дано A = 367 8 , B = F9 16 . Какое из чисел C, записанных в двоичной системе, отвечает условию A
5. Даны 4 целых числа, записанных в двоичной системе,: 10101011; 10011100; 11000111; 10110100. Сколько среди них чисел, меньших, чем BC 16 ?
6. Вычислите сумму чисел 5A 16 + 50 8 . Результат представьте в двоичной системе счисления.
7. Дано: а = CF 16 , b = 321 8 . Какое из чисел х, записанных в двоичной системе, отвечает уравнению a
8. Сколько единиц в двоичной записи десятичного числа 255?
9. Сколько значащих нулей в двоичной записи десятичного числа 64?
- 16 предметов Для учеников 1-11 классов и дошкольников Бесплатные наградные документы для учеников и учителей
Розыгрыш ЦЕННЫХ ПРИЗОВ среди ВСЕХ участников
- Все материалы Статьи Научные работы Видеоуроки Презентации Конспекты Тесты Рабочие программы Другие методич. материалы
Комплект тестов ( 4 варианта) для подготовки к ЕГЭ по информатике с вариантами ответов + ответы.
Задания 4. Кодирование и операции над числами в разных системах счисления
1.Двоичная система счисления (перевод из двоичной системы счисления в 8, 10, 16-ю системы счисления)
2. Различные системы счисления (перевод из
8, 10, 16-ю систем счисления в 2-ю систему счисления)
3. Сравнение чисел в различных системах счисления (выполнение арифметических операций в различных системах счисления)
Каждый тест состоит из 9 заданий и рассчитан на выполнение в рамках повторения данной темы (30-45 минут)
- Ткачёва Елена ВикторовнаНаписать 4255 05.06.2015
Номер материала: 556952
- Информатика Тесты
Не нашли то что искали?
Оставьте свой комментарий
Подарочные сертификаты
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.
5. Для каждого из перечисленных ниже десятичных чисел построили двоичную запись. Укажите число, двоичная запись которого содержит ровно 3 единицы.
Вариант 1 (системы счисления)
Дано: а = 306 8 , b = C8 16 . Какое из чисел х, записанных в двоичной системе, отвечает неравенству a
2. Ч ему равна сумма чисел BA 16 и AB 16 ? Результат запишите в восьмеричной системе счисления.
3. Сколько нулей в двоичной записи десятичного числа 1020?
4. Переведите в двоичную систему десятичное число 57.
5. Сколько единиц в двоичной записи десятичного числа 127?
6. Для каждого из перечисленных ниже десятичных чисел построили двоичную запись. Укажите число, двоичная запись которого содержит наибольшее количество единиц.
7. Чему равна сумма чисел 43 8 и 56 16 ?
8. Дано: а = 21 10 , b = 23 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию b
9. Сколько единиц в двоичной записи десятичного числа 1025?
Вариант 2 (системы счисления)
Переведите в двоичную систему десятичное число 49.
2. Дано A = 147 8 , B = 69 16 . Какое из чисел C , записанных в двоичной системе, отвечает условию A?
3. Дано N = 65 8 , M = 37 16 . Какое из чисел K, записанных в двоичной системе, отвечает условию N
4. Как выглядит число В0С 16 в двоичной системе счисления?
5. Дано: а = 16 10 , b = 22 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию а
6. Вычислите сумму чисел x и у, при х = D5 16 , у = 57 8 .
Результат представьте в двоичной системе счисления.
7. Дано: а = 32 10 , b = 35 8 . Какое из чисел с, записанных в двоичной системе, отвечает условию b
8. Сколько значащих нулей в двоичной записи десятичного числа 48?
9. Дано N =75 8 , M =3F 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N K M ?
Вариант 3 (системы счисления)
1. Чему равна сумма чисел 57 8 и 46 16 ?
2. Дано N = 227 8 , M = 99 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N?
3. Наибольшим десятичным числом, которое в двоичной системе счисления можно записать с помощью трёх цифр, является число
4. Вычислите сумму чисел x и у, при х = D5 16 , у = 57 8 .
Результат представьте в двоичной системе счисления.
5. Для каждого из перечисленных ниже десятичных чисел построили двоичную запись. Укажите число, двоичная запись которого содержит ровно 3 единицы.
6. Сколько единиц в двоичной записи десятичного числа 307?
7. Дано X = E7 16 , Y = 351 8 . Какое из чисел Z, записанных в двоичной системе, отвечает условию X
8. Двоичным эквивалентом десятичного числа 99 является:
9. Вычислите сумму чисел x и у при х = 77 10 , у = 77 8 . Результат представьте в двоичной системе счисления.
Вариант 4 (системы счисления)
1. Дано N =75 8 , M =3F 16 . Какое из чисел K , записанных в двоичной системе, отвечает условию N K M ?
2. Значение выражения 11 16 + 11 8 : 11 2 в двоичной системе счисления равно
3. Дано А=9D 16 , B=237 8 . Какое из чисел C, записанных в двоичной системе, отвечает условию A
4. Дано A = 367 8 , B = F9 16 . Какое из чисел C, записанных в двоичной системе, отвечает условию A
5. Даны 4 целых числа, записанных в двоичной системе,: 10101011; 10011100; 11000111; 10110100. Сколько среди них чисел, меньших, чем BC 16 ?
6. Вычислите сумму чисел 5A 16 + 50 8 . Результат представьте в двоичной системе счисления.
7. Дано: а = CF 16 , b = 321 8 . Какое из чисел х, записанных в двоичной системе, отвечает уравнению a
8. Сколько единиц в двоичной записи десятичного числа 255?
9. Сколько значащих нулей в двоичной записи десятичного числа 64?
- 16 предметов Для учеников 1-11 классов и дошкольников Бесплатные наградные документы для учеников и учителей
Розыгрыш ЦЕННЫХ ПРИЗОВ среди ВСЕХ участников
- Все материалы Статьи Научные работы Видеоуроки Презентации Конспекты Тесты Рабочие программы Другие методич. материалы
Комплект тестов ( 4 варианта) для подготовки к ЕГЭ по информатике с вариантами ответов + ответы.
Задания 4. Кодирование и операции над числами в разных системах счисления
1.Двоичная система счисления (перевод из двоичной системы счисления в 8, 10, 16-ю системы счисления)
2. Различные системы счисления (перевод из
8, 10, 16-ю систем счисления в 2-ю систему счисления)
3. Сравнение чисел в различных системах счисления (выполнение арифметических операций в различных системах счисления)
Каждый тест состоит из 9 заданий и рассчитан на выполнение в рамках повторения данной темы (30-45 минут)
- Ткачёва Елена ВикторовнаНаписать 4255 05.06.2015
Номер материала: 556952
- Информатика Тесты
Не нашли то что искали?
1.Двоичная система счисления (перевод из двоичной системы счисления в 8, 10, 16-ю системы счисления)
Оставьте свой комментарий
Вариант 4 системы счисления.
Infourok. ru
27.06.2018 2:20:42
2018-06-27 02:20:42
Тема: «Системы счисления»
Вычислите значение выражения $C1_ — 57_8 + 200_4$. + 2$?
Укажите наименьшее трёхзначное шестнадцатеричное число, двоичная запись которого содержит ровно 8 единиц. В ответе запишите только само шестнадцатеричное число, основание системы с…
Укажите наибольшее трёхзначное шестнадцатеричное число, двоичная запись которого содержит ровно 5 нулей. В ответе запишите только само шестнадцатеричное число, основание системы сч…
Укажите наименьшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 6 единиц. В ответе запишите только само восьмеричное число, основание системы счислени…
Укажите наибольшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 7 нулей. В ответе запишите только само восьмеричное число, основание системы счисления…
Сколько нулей в двоичной записи шестнадцатеричного числа $DC79_$?
Сколько единиц в двоичной записи шестнадцатеричного числа $9AE8_$?
Сколько нулей в двоичной записи восьмеричного числа $5675_8$?
Сколько единиц в двоичной записи восьмеричного числа $7543_8$?
«Кодирование и операции над числами в разных системах счисления» — тема задания 1 ЕГЭ по информатике, причем вам могут попасться вопросы, касающиеся двоичной системы счисления или любой иной, отличной от двоичной. Также некоторое количество тестов посвящено сравнению чисел в различных системах счисления.
Построение задания 1 ЕГЭ по информатике может быть либо традиционное тестовое, либо требующее самостоятельного ответа, но в любом случае ответ будет кратким. Учащемуся предлагается вопрос и несколько вариантов ответов, среди которых он должен найти единственный правильный. Вопрос может звучать как «Укажите целое число от 8 до 11, двоичная запись которого содержит только две единицы», «Чему равна сумма чисел 57 (восьмеричная система) и 46 (шестнадцатеричная система)?» или «Сколько верных (неверных) неравенств среди перечисленных в списке?».
Иногда ответов в задании № 1 ЕГЭ по информатике может быть более одного. В этом случае в условии будет оговорка: «Если верных ответов (найденных чисел) несколько, требуется указать наибольшее (или наименьшее) из них».
Укажите наибольшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 7 нулей. В ответе запишите только само восьмеричное число, основание системы счисления…
Вычислите значение выражения $C1_ — 57_8 + 200_4$. + 2$?
Укажите наименьшее трёхзначное шестнадцатеричное число, двоичная запись которого содержит ровно 8 единиц. В ответе запишите только само шестнадцатеричное число, основание системы с…
Укажите наибольшее трёхзначное шестнадцатеричное число, двоичная запись которого содержит ровно 5 нулей. В ответе запишите только само шестнадцатеричное число, основание системы сч…
Укажите наименьшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 6 единиц. В ответе запишите только само восьмеричное число, основание системы счислени…
Укажите наибольшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 7 нулей. В ответе запишите только само восьмеричное число, основание системы счисления…
Сколько нулей в двоичной записи шестнадцатеричного числа $DC79_$?
Сколько единиц в двоичной записи шестнадцатеричного числа $9AE8_$?
Сколько нулей в двоичной записи восьмеричного числа $5675_8$?
Сколько единиц в двоичной записи восьмеричного числа $7543_8$?
«Кодирование и операции над числами в разных системах счисления» — тема задания 1 ЕГЭ по информатике, причем вам могут попасться вопросы, касающиеся двоичной системы счисления или любой иной, отличной от двоичной. Также некоторое количество тестов посвящено сравнению чисел в различных системах счисления.
Построение задания 1 ЕГЭ по информатике может быть либо традиционное тестовое, либо требующее самостоятельного ответа, но в любом случае ответ будет кратким. Учащемуся предлагается вопрос и несколько вариантов ответов, среди которых он должен найти единственный правильный. Вопрос может звучать как «Укажите целое число от 8 до 11, двоичная запись которого содержит только две единицы», «Чему равна сумма чисел 57 (восьмеричная система) и 46 (шестнадцатеричная система)?» или «Сколько верных (неверных) неравенств среди перечисленных в списке?».
Иногда ответов в задании № 1 ЕГЭ по информатике может быть более одного. В этом случае в условии будет оговорка: «Если верных ответов (найденных чисел) несколько, требуется указать наибольшее (или наименьшее) из них».
Построение задания 1 ЕГЭ по информатике может быть либо традиционное тестовое, либо требующее самостоятельного ответа, но в любом случае ответ будет кратким. Учащемуся предлагается вопрос и несколько вариантов ответов, среди которых он должен найти единственный правильный. Вопрос может звучать как «Укажите целое число от 8 до 11, двоичная запись которого содержит только две единицы», «Чему равна сумма чисел 57 (восьмеричная система) и 46 (шестнадцатеричная система)?» или «Сколько верных (неверных) неравенств среди перечисленных в списке?».
Тема: «Системы счисления»
В ответе запишите только само восьмеричное число, основание системы счисления.
Examer. ru
26.11.2019 11:52:10
2019-11-26 11:52:10
Источники:
Https://infourok. ru/podgotovka_k_ege_po_informatike_zadanie_4_po_teme-556952.htm
Https://examer. ru/ege_po_informatike/2021/zadanie_1/
Системы счета, двоичная система
Градусов точности
Система подсчета, которую вы используете, влияет на точность некоторых вычислений, что может показаться ошибочным. Один из примеров можно увидеть в извлечении квадратного корня из 3 в десятичной системе счисления. Следуйте методу из части 2, чтобы извлечь квадратный корень из 2.
ПРИБЛИЖЕНИЯ
Обратите внимание, как каждое «место» в десятичной системе дает более близкое приближение к квадратному корню из 3.Чтобы проверить это, посмотрите, насколько близкое возведение корня в квадрат приводит вас к квадрату, с которого вы начали: 3.
Первое место — 1, который в квадрате равен только 1 — ошибка 2 по сравнению с истинным квадратом 3. Если бы использовалось 2, ответ был бы ближе: квадрат 4 — ошибка 1. Но наше правило таково: оставаться ниже истинного значения. Другой метод может использовать ближайшее значение перед переходом к следующему шагу.
Второе место приближается быстро. 1,7 в квадрате составляет 2,89, уменьшая ошибку до 0,11. третье место, 1.73 дает квадрат 2,9929 — ошибка 0,0071. Четвертое место, 1,732, подходит намного ближе, в результате чего получается квадрат 2,999824 — ошибка 0,000176.
Дроби в расширенной системе подсчета
Если вы использовали систему septimal (7s) , доля 1/7 была бы 0,1 — совершенно точно, только с одним знаком после точки (не десятичной точкой, если эта система является septimal). В десятичной системе дробь, полученная в результате деления на 7, не так проста.
Следуйте той же процедуре регистрации ошибок. Хотя прогрессивное уменьшение погрешности наблюдается аналогично, больший интерес представляет вид повторяющихся десятичных дробей.
ДОБЫЧИ И ДЕСЯТИЧНЫЕ ЧАСТИ
Эти проблемы должны заставить вас задаться вопросом, насколько точны и надежны эти цифры. Что означает ошибка 1 часть на 1 миллион? случайно ли вы (что очень маловероятно) используете семеричную систему вместо десятичной, насколько точна 1/7?
Порядки величин
С порядков величины начинается еще одно совершенно новое понятие в математике.Чтобы показать эту концепцию под другим углом, предположим, что вы приближаетесь к области, состоящей из идеального квадрата. Чтобы получить нужную площадь более точно, вы добавляете или вычитаете немного к обоим измерениям или от них. Начиная с квадрата размера L, вы либо добавляете, либо вычитаете маленькие кусочки S из каждого измерения. Изменение площади состоит из двух маленьких, длинных ломтиков (размеры L на S) и одного гораздо меньшего кусочка, который измеряет S в обоих направлениях. Чем меньше S относительно L, тем меньше S в квадрате относительно SL.
Вы можете расширить эту концепцию до аналогичной регулировки кубического объема. Теперь, начиная с большого куба, L в каждую сторону, вы добавляете или вычитаете 3 плиты размером L квадрат и толщиной S, три палочки длиной L на квадрат S и один очень крошечный кубик размером S. Если S составляет 1/10 L (и может быть намного меньше), то S в кубе составляет 1/1000 куба L.
ЗАКАЗЫ МАГНИТУДЫ
Вы можете показать ту же прогрессию алгебраически. Для этого, если a — небольшая дробь, тогда степени a, a 2 , a 3 , a 4 и т. Д., состоят из нисходящего ряда порядков. Обратите внимание, что последовательные степени a имеют ряд коэффициентов, которые, если взять четвертую степень, равны 1, 4, 6, 4 и 1.
Все еще придерживаясь нашей знакомой десятичной системы, вы заменяете a другими значениями и показываете, как их изменение меняет последовательные степени (1 + a). Если a равно 0,1, последующие степени начинают «перетекать» в более ранние «места». До 4-й степени первые две цифры — 1,1, 1,2, 1,3, а в 4-й степени — 1.5 было бы ближе.
Если a равно 0,01, более высокие степени не влияют на первый член, который теперь находится во втором десятичном разряде. Отбросьте то, что следует за вторым местом, первые два места теперь 1.01, 1.02, 1.03 и 1.04. Дальнейшие слагаемые в этой 4-й степени дают только 1,0406 на 4-м месте.
Однако, если a равно 0,2, более поздние термины гораздо раньше переходят в более ранние. Заблокированные цифры показывают это вторжение.
Системы счета
До того, как были изобретены электронные цифровые устройства, мы использовали счетчики с маленькими колесиками, на которых были цифры.Цифры, которые показывались через переднее окно, были похожи на те, которые отображаются на электронных цифровых устройствах. Если вы сняли крышку с остальной части колеса, вы могли увидеть, как оно работает, что помогло вам понять системы счисления.
В крайнем правом колесе отсчитывается от 0 до 9 по десятичной системе. Когда дошло до 9, оно переместилось с 9 на 0, а следующее колесо переместилось с 0 на 1. Каждый раз, когда первое колесо переходило с 9 на 0, следующее колесо продвигалось еще на 1, пока не вернулось к 9. Затем , два колеса читают 99.Поскольку на этот раз первое колесо переместилось с 9 на 0, следующее колесо также переместится с 9 на 0, а третье колесо переместится с 0 на 1, в результате чего будет показано 100.
Десятичная система счисления
Десятичная система (с основанием десять) — не единственная система, которую вы можете использовать. Много лет назад в некоторых культурах использовалась двенадцатеричная система , — счет до двенадцати вместо десяти. Чтобы использовать систему счетчика колес, вам понадобится еще два числа на каждом колесе. В показанных здесь колесах дополнительными символами являются t и e для десяти и одиннадцати.Современные цифровые системы чаще используют систему счисления 16, называемую шестнадцатеричной системой.
Первые шесть букв алфавита завершают однозначные числа до 15.
Десятичный
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Шестнадцатеричный
0 1 2 3 4 5 6 7 8 9 А Б В Г Д Е Ф
В десятичной системе «10» (один ноль) означает десять. В двенадцатеричной системе «10» означает двенадцать.В шестнадцатеричном формате «10» означает шестнадцать. Чтобы немного поупражняться в разных системах, используйте двенадцатеричную систему счисления. Vbu увидит, почему в калькуляторах или компьютерах используется шестнадцатеричный код внутри — они обычно считывают десятичные числа.
Преобразование десятичной системы в двенадцатеричную
Зачем работать в двенадцатеричной системе, если она никогда не использовалась? Поскольку что-то незнакомое заставляет задуматься, легче понять, что используется. Шестнадцатеричная система основана на двоичной системе счисления (основание два), что не так просто для систем, использующих большую числовую базу, потому что трудно увидеть что-то, имеющее только два состояния (например, да или нет), как подсчет.Итак, посмотрим на преобразование десятичной системы в двенадцатеричную.
Чтобы узнать, сколько раз число считается до двенадцати, вы разделите число на 12 в знакомой десятичной системе. Остаток внизу — это количество единиц, оставшихся после того, как число полных двенадцати в частном было передано на счетчик двенадцати. Затем снова разделите на 12. На этот раз остаток — одиннадцать. В двенадцатеричной системе все числа до одиннадцати должны содержать одну цифру, поэтому используется е. «Вы можете выполнить оставшуюся часть этого преобразования.Двенадцатеричный эквивалент десятичного числа 143131 — 6t9e7.
Преобразование десятичной 143131 в двенадцатеричную
Преобразование двенадцатеричной системы в десятичную
Как преобразовать двенадцатеричную систему в десятичную? Просто измените процесс в обратном порядке. Используя двенадцатеричное число, разделите двенадцатеричное число на десять, сколько раз необходимо. Вам понадобится как минимум столбец десятков в двенадцатеричной таблице умножения. Вы, вероятно, были знакомы с колонкой «двенадцать раз» — достаточно, чтобы сделать это довольно легко.Однако таким образом вам нужно использовать столбец десять раз в системе двенадцати. Эта система незнакома и заставляет задуматься.
Спуститесь по столбцу десять раз. Десять умножить на два — 18. Это означает, что 1 двенадцать и 8, которые вы обычно называете двадцатью. Двенадцать и восемь составляют двадцать, не так ли? Затем десять умножить на 3 равно 26, что означает 2 двенадцати и 6. Две двенадцать равняются 24, а шесть составляют то, что обычно называется 30. Закончите до конца столбца.
ТАБЛИЦА ДВОЙНОГО УМНОЖЕНИЯ
Преобразование двенадцатеричной системы 6 + 9e7 в десятичную
Двоичный счет
Сложность работы в двоичном формате заключается в том, что каждое место имеет только два «состояния»: 0 и 1.Вы не считаете до чего-то, а затем переходите к следующему месту. Если у вас уже есть 1, следующая 1 вернет его к 0 и передаст 1 следующему месту. Если у вас есть строка из 1 с, то добавление еще одной 1 сдвигает их все обратно к 0 и передает 1 на следующее место (справа налево).
На панели окна здесь десятичный эквивалент числа заменяет двоичные числа. В двоичной системе каждое место будет либо 1, либо 0.
Преобразование десятичного числа в двоичное
Здесь, вверху, значения разрядов в двоичном формате, которые имеют 1 вместо 0, перечислены как десятичные.Начните с числа в десятичной форме, 1546. Во-первых, 11-й двоичный столбец равен 1024. Это помещает 1 в 11-й двоичный столбец. Вычтите 1024 из 1546, оставив 522. Затем 10-й столбец в двоичной системе равен 512, поэтому вычтите 512 из 522, оставив 10, и поместите 1 в 10-й столбец двоичной системы. Если осталось 10, следующая двоичная цифра, которую вы можете использовать, — это 4-й столбец, то есть 8. Таким образом, мы пропускаем столбцы с 9-го по 5-й, помещаем 1 в 4-й столбец и вычитаем 8 из 10 (оставляя 2). 2 помещает 1 во 2-й столбец двоичного кода, что завершает преобразование.
Чтобы завершить то, что началось в предыдущем разделе, в следующей таблице перечислены двоичные эквиваленты десятичных чисел от 1 до 30.
Двоичное умножение
Хотя вы вводите данные в свой калькулятор или компьютер в знакомой десятичной системе счисления, все они используют двоичный код для выполнения всех математических функций, которые они выполняют. Попробуйте выполнить умножение выборки, в основном так, как это делает ваш калькулятор. Предположим, вы умножаете 37 на 27. Во-первых, он должен преобразовать каждое число в двоичное, что он и делает, когда вы вводите числа.Я немного упрощу его, преобразовав его в истинный двоичный код вместо одного из двух двоичных преобразований, которые упрощают работу калькулятора, но более трудны для понимания вами. Это будет позже.
Ниже приведены преобразования 37 и 27 в чистый двоичный код.
Здесь умножение в двоичном формате, изложенное так же, как и обычное длинное умножение, но в системе, где никакие числа выше 1 «не разрешены». Каждая цифра должна быть либо 1, либо 0. На самом деле это сводится к сложению последовательности цифр, которые представляют 37 в каждом «месте», где 1 цифра находится в 27.
Четыре 1-значные числа находятся в 27, поэтому три 1-значные числа в 37 (с перемежающимися нулями) вводятся 4 раза в нужных местах (для представления «27 раз») и складываются. Вы можете показать их все добавленные сразу. Однако калькулятор это делает. Каждые два Is возвращают это место в 0 и передают 1 следующему месту слева.
Если смотреть справа, каждое из первых трех мест имеет только одну единицу, которая появляется в сумме. Четвертое место имеет две единицы, которые дают 0 в этом месте и передают 1 на пятое место, у которого уже есть собственная единица, поэтому оно становится 0 и передает 1 на шестое место.В этом месте уже есть две единицы, так что это место снова переходит в 1 и передает 1 на седьмое место, где снова две единицы. У этого места теперь 1, и оно передает 1 на восьмое место. Восьмое место не имеет «Is», поэтому вводится 1 пройденный, и это конец «оставленного паса». Каждое из оставшихся двух мест имеет по одной единице, которая «сбивается». Произведение в двоичном формате: 1111100111.
Преобразуйте двоичное число обратно в десятичное, поместив десятичный эквивалент каждого двоичного разряда, где стоит 1.Сложение десятичных эквивалентов дает 999. Чтобы проверить, умножьте 37 на 27, старомодный длинный путь.
«Какой долгий путь?» вы можете спросить. Бинарный путь вам кажется долгим. Единственная причина, по которой калькулятор делает это так быстро, заключается в том, что он выполняет миллионы «операций» в секунду. Он проходит долгий путь и вычисляет быстрее, чем вы, используя привычный вам короткий путь.
Умножение 37 x 27 Двоичное
ДВОИЧНОЕ УМНОЖЕНИЕ
Альтернативное двоичное преобразование
Вот еще один способ преобразовать десятичные дроби в двоичные.Он использует таблицу двоичных эквивалентов чисел от 1 до 9 в каждом десятичном разряде. Чтобы проиллюстрировать его использование, два следующих числа для деления преобразуются в двоичную форму под таблицей.
Обратите внимание, что двоичные эквиваленты конкретной цифры не имеют отношения друг к другу — от одного столбца к другому. Вы не можете сдвинуть десятичную точку или умножить на десять, сделав аналогичный сдвиг в двоичном формате. Я вернусь к тому, что калькуляторы или компьютеры делают с этой проблемой через минуту.
Двоичное деление
Двоичное деление довольно драматично демонстрирует то, что вы узнали из части 1 этой книги: деление — это на самом деле повторяющееся вычитание. Вычитание двоичного числа 37, что составляет 100101, в верхних местах делимого является точным без остатка. Остается двоичное число 37 на последнем месте. Таким образом, в двоичном формате частное равно 1000001.
Чтобы преобразовать двоичное число обратно в десятичное, воспользуйтесь дополнительным вычитанием в двоичном формате и примените таблицу из предыдущего раздела.Первое вычитание — это двоичное значение 100, в результате чего остается 11101. Для двоичного числа 20, которое оставляет 1001, вычитаем двоичное значение для 9. Таким образом, работая через двоичный код, при делении 4773 на 37 остается 129 как частное.
АЛЬТЕРНАТИВНОЕ ДВОИЧНОЕ ПРЕОБРАЗОВАНИЕ
РАЗДЕЛАТЬ 4773 на 37
1001010100101 по 100101
Специальный двоичный калькулятор
Вы заметили, что изменение двоичных цифр для различных цифр в десятичной системе с каждым десятичным разрядом усложняет преобразование.Когда вы вводите цифру на калькуляторе, первая цифра появляется справа. Когда вы вводите следующую цифру, первая цифра перемещается влево, а новая появляется справа. Если бы калькулятору пришлось преобразовать цифру в новую двоичную последовательность для следующего места, система была бы очень сложной.
Таким образом, калькулятор выделяет 4 двоичных разряда для каждого десятичного разряда, что требует немного больше «места» в памяти калькулятора, чем для чистого двоичного кода. Фактически калькулятор теперь «работает» в десятичной системе счисления, но использует 4 двоичных разряда для передачи каждого десятичного разряда.
Индексы
В любой системе чисел, двоичной, восьмеричной, десятичной или шестнадцатеричной (или даже в некоторых других, которые обычно не используются), место числа указывает степень числа, на котором основана система. В двоичной системе, в зависимости от того, где появляется 1, она представляет некоторую степень 2. На 4-м месте это 3-я степень 2, которая равна 8. Вот сравнение между степенями 2 и 10.
В этом примере вы можете увидеть некоторые правила использования индексов, которые помогут нам сократить время умножения и деления.Во-первых, помните, что умножение и деление — это кратчайшие методы выполнения повторного сложения и вычитания. Теперь индексов — это сокращенные методы многократного умножения и деления.
Предположим, вам нужно умножить x a на x b . Изделие x (a + b) . В этом легко убедиться, если вы напишете x, умноженное на себя 1 раз, а затем умножив произведение на x, умноженное на себя b раз. Общее количество раз, которое вы умножаете x само на себя, равно a + b раз.Для иллюстрации предположим, что a равно 3, а b равно 2; x 3 умножаем на x 2 получаем x 5 . Численно 2 3 равно 8, 2 2 равно 4 и 2 5 равно 32. 8 x 4 = 32. Это проверяет.
А теперь попробуйте разделение. Разделив x a на x b , получим частное x a-b . Вы можете проверить этот ответ, умножив x на себя, умножив на числитель дроби, и используя x, умноженное на само себя, b раз в качестве знаменателя. Вы можете отменить b раз количество x в числителе и оставить остаток x в числителе, который равен (a — b) раз.Чтобы проиллюстрировать это, сделайте a = 5 и b = 2. x 5 разделить на x 2 равно x 3 . Если вы использовали 2 для x, x 5 равно 32, x 2 равно 4, а x 3 равно 8. 32, разделенное на 4, будет равно 8.
Корни: инверсия степеней
Здесь вы должны различать число, обратное числу, и число, обратное степени. Индекс минус — это обратное или обратное число, возведенное в степень, обозначенную индексом. Корни противоположны полномочиям.Например, поскольку 2 2 равно 4,4 1/2 равно 2; 2 3 равно 8, поэтому 8 1/3 равно 2; 2 4 равно 16, поэтому 16 1/4 равно 2 и т. Д.
Дробные индексы обозначают корни. Степень 4 из 3/2 равна 8, квадратный корень из 4 равен 2, а 2 3 равен 8. Обращая этот процесс вспять, 8 2/3 равно 4. Вы можете найти другие числа в корнях с помощью процесса квадратный корень. Например, 2 1/2 (квадратный корень из 2) равен 1,414 и т. Д .; 8 1/2 вдвое больше.Почему? Поскольку 4 1/2 равно 2, а 2 1/2 равно 1,414, (2 умноженное на 4) 1/2 равно 8 1/2 (дважды 1,414), что составляет 2,828.
Вы не ограничены квадратными корнями или какими-то конкретными корнями. Теперь открывается совершенно новое поле чисел.
Surds и индексы
Введение Surds фактически возвращает нас к практически устаревшему способу написания корней. До того, как в моду вошло обозначение индекса дроби, представленное в предыдущем разделе, было принято использовать сурд перед числом, чтобы указать его квадратный корень.Таким образом, сюрд перед x представляет квадратный корень из x, то же самое, что xl /. Если поставить 3 перед сурдом, вместо квадратного корня получится кубический корень из x. Добавление маленькой n или любой другой буквы или числа перед сурдом также означало определенный корень. Если число под сурдом имеет степень b и a перед сурдом, выражение можно записать как: x b / a . Сурд, за которым следует vinculum поверх (линия поверх) a 2 + b 2 является корнем всего выражения.Это выражение можно записать: (a 2 + b 2 ) 1/2 .
Вопросы и проблемы
Примечание. Вопросы и проблемы здесь не отсортированы по порядку. Они предполагают, что знают более ранние части этой книги. Если у вас возникли трудности с проблемой, сначала попробуйте другие, а затем вернитесь к той, которая сложна. Эти вопросы составлены таким образом, что вы должны проявить некоторую инициативу в применении принципов, которые были представлены до этого момента.
1. Найдите десятичный эквивалент дроби 1/37. Определите ошибку, которая возникает при нахождении десятичного эквивалента трех значащих цифр.
2. В двоичной системе умножьте 15 на 63 и преобразуйте обратно в десятичную систему. Проверьте свой результат, умножив десятичные числа напрямую.
3. В двоичной системе разделите 1922 на 31 и преобразуйте обратно в десятичную систему. Проверьте свой результат, разделив десятичные числа напрямую.
4.Найдите значения следующих выражений:
(а) 16 3/4 (б) 243 0,8 (в) 25 1,5
(г) 64 2/3 (д) 343 4/3
5. Преобразуйте следующие числа из десятичных в двоичные. В качестве проверки конвертируйте их обратно.
(а) 62 (б) 81 (в) 111
(г) 49 (д) 98 (ж) 222
(г) 650 (в) 999 (я) 2000
6. Преобразуйте следующие числа из двоичных в десятичные.В качестве проверки конвертируйте их обратно.
(а) 101 (б) 1111 (в) 10101
(г) 111100 (д) 110111000110
7. Умножьте 129 на 31 в десятичной системе. Умножьте двоичные эквиваленты этих чисел. Предположим, что ошибка сделана во второй цифре справа во втором числе в десятичном произведении, поэтому 129 умножается на 41 вместо 31. Предположим, что аналогичная ошибка возникает в двоичной системе, поэтому вторая цифра справа в второе число перевернуто.Сравните относительную ошибку в десятичной системе с ошибкой в двоичной системе.
8. Вычислите выражение (a 2 + b 2 ) 1/2 для следующих значений:
(a) a = 4 и b = 3 (b) a = 12 и b = 5
(c) a = 24 и b = 7 (d) a = 40 и b = 9
(e) a = 60 и b = 11 (f) a = 84 и b = 13
(г) а = 112 и 6 = 15
Что общего у каждой пары?
9. Вычислите выражение (a 2 + b 2 ) 1/2 для следующих значений:
(а) a = 8 и b = 6 (б) a = 15 и b = 8
(c) a = 24 и b = 10 (d) a = 35 и b = 12
(e) a = 48 и b = 14 (f) a = 63 и b = 16
Что общего у каждой пары?
10.Запишите в виде простых десятичных чисел, без дробей, следующие выражения:
(a) 100 2 (b) 100 1/2
(c) 100 -2 (d) 100 -1/2
Из этих четырех значений найдите значения следующих выражений: метод сложения и вычитания индексов:
(д) 100 3/2 (ж) 100 5/2
(г) 100 -3/2 (в) 100 -5/2
11. Используя только кнопку функции вычисления квадратного корня на калькуляторе, оцените следующие значения как минимум с тремя десятичными знаками:
(а) 100 1/4 (б) 100 1/8
(в) 100 1/16 (г) 100 1/32
12.Поскольку значение показателя в предыдущей задаче постоянно уменьшается вдвое, то есть 1/64, 1/128, 1/256, 1/512 и т. Д., К какому числу подойдет выражение? Почему?
13. Найдите значения с точностью до трех десятичных знаков для следующего:
(а) 32 0,1 (б) 32 0,2 (в) 32 0,3
(г) 32 0,4 (д) 32 0,5 (ж) 32 0,6
(г) 32 0,7 (в) 32 0,8 (i) 32 0,9
14.Вычислите следующие выражения, если хотите, используя калькулятор. Где возможно, отображайте выражения как минимум с тремя десятичными знаками:
(а) (10 2 — 2 6 ) 1/2 (б) (36 2 — 8 3 ) 1/2 (в) (28 2 — 21 2 ) 1/3
(г) (5 2 -3 2 ) 1/4 (д) (17 2 -15 2 ) 1/6 (ж) 6561 1/2
(г) 6561 -1/2 (в) 6561 1/4 (i) 6561 -1/4
(j) 6561 1/8 (k) 6561 -1/8
операторов и выражений в Python — Real Python
После завершения нашего предыдущего руководства по переменным Python в этой серии, вы должны теперь хорошо понимать, как создавать и присваивать имена объектам Python различных типов.Давай поработаем с ними!
Из этого руководства вы узнаете: Вы увидите, как в Python можно выполнять вычисления с объектами. К концу этого руководства вы сможете создавать сложные выражения , комбинируя объекты и операторы .
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Операторы и выражения Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
В Python операторы — это специальные символы, обозначающие, что должны быть выполнены какие-то вычисления.Значения, над которыми действует оператор, называются операндами .
Вот пример:
>>> >>> a = 10
>>> b = 20
>>> а + б
30
В этом случае оператор + складывает операнды a и b вместе. Операндом может быть буквальное значение или переменная, которая ссылается на объект:
>>> a = 10
>>> b = 20
>>> а + б - 5
25
Последовательность операндов и операторов, например a + b - 5 , называется выражением.Python поддерживает множество операторов для объединения объектов данных в выражения. Они рассматриваются ниже.
Арифметические операторы
В следующей таблице перечислены арифметические операторы, поддерживаемые Python:
| Оператор | Пример | Значение | Результат |
|---|---|---|---|
+ (одинарный) |
+ |
Унарный положительный | a Другими словами, он ничего не делает.В основном он существует ради полноты, чтобы дополнить Унарное отрицание . |
+ (двоичный) |
a + b |
Дополнение | Сумма a и b |
- (одинарный) |
-a |
Унарное отрицание | Значение равно a , но с противоположным знаком |
- (двоичный) |
а - б |
Вычитание | b вычитается из a |
* |
a * b |
Умножение | Продукт из a и b |
/ |
а / б |
Отдел | Частное, когда a делится на b .Результат всегда имеет тип с плавающей запятой . |
% |
a% b |
по модулю | Остаток при делении a на b |
// |
а // б |
Подразделение этажа (также называется Целочисленное деление ) | Частное при делении a на b с округлением до следующего наименьшего целого числа |
** |
a ** b |
Возведение в степень | a в степени b |
Вот несколько примеров использования этих операторов:
>>> >>> a = 4
>>> b = 3
>>> + а
4
>>> -b
-3
>>> а + б
7
>>> а - б
1
>>> а * б
12
>>> а / б
1.3333333333333333
>>> a% b
1
>>> а ** б
64
Результат стандартного деления (/) всегда равен с плавающей запятой , даже если дивиденд делится на делитель без остатка:
>>> 10/5
2.0
>>> тип (10/5)
<класс 'float'>
Когда результат деления по полу ( // ) положительный, дробная часть как бы обрезается, остается только целая часть.Если результат отрицательный, результат округляется до следующего наименьшего (большего отрицательного) целого числа:
>>> 10/4
2,5
>>> 10 // 4
2
>>> 10 // -4
-3
>>> -10 // 4
-3
>>> -10 // -4
2
Кстати, обратите внимание, что в сеансе REPL вы можете отобразить значение выражения, просто набрав его в приглашении >>> без print () , так же, как вы можете с буквальным значением или переменная:
>>> 25
25
>>> х = 4
>>> у = 6
>>> х
4
>>> у
6
>>> х * 25 + у
106
Операторы сравнения
| Оператор | Пример | Значение | Результат |
|---|---|---|---|
== |
a == b |
Равно | Истинно , если значение a равно значению b Ложно в противном случае |
! = |
а! = Ь |
Не равно | Истинно , если a не равно b Ложно в противном случае |
< |
a |
Менее | Истинно , если a меньше b Ложно в противном случае |
<= |
a <= b |
Меньше или равно | Истинно , если a меньше или равно b Ложно в противном случае |
> |
a> b |
Больше | Истинно , если a больше b Ложь в противном случае |
> = |
a> = b |
Больше или равно | Истинно , если a больше или равно b Ложь в противном случае |
Вот примеры используемых операторов сравнения:
>>> >>> a = 10
>>> b = 20
>>> а == б
Ложь
>>> а! = б
Правда
>>> а <= б
Правда
>>> а> = б
Ложь
>>> а = 30
>>> б = 30
>>> а == б
Правда
>>> а <= б
Правда
>>> а> = б
Правда
Операторы сравнения обычно используются в логических контекстах, таких как условные операторы и операторы цикла, для направления выполнения программы, как вы увидите позже.
Сравнение равенства значений с плавающей запятой
Вспомните из предыдущего обсуждения чисел с плавающей запятой, что значение, хранящееся внутри объекта float , может быть не совсем таким, как вы думаете. По этой причине сравнивать значения с плавающей запятой на предмет точного равенства - плохая практика. Рассмотрим этот пример:
>>> х = 1,1 + 2,2
>>> х == 3.3
Ложь
Ура! Внутреннее представление операндов сложения не совсем равно 1.1 и 2,2 , поэтому вы не можете полагаться на x для точного сравнения с 3,3 .
Предпочтительный способ определить, являются ли два значения с плавающей запятой «равными», - это вычислить, близки ли они друг к другу с учетом некоторого допуска. Взгляните на этот пример:
>>> >>> допуск = 0,00001
>>> х = 1,1 + 2,2
>>> абс (x - 3,3) <допуск
Правда
abs () возвращает абсолютное значение.Если абсолютное значение разницы между двумя числами меньше указанного допуска, они достаточно близки друг к другу, чтобы считаться равными.
Логические операторы
Логические операторы , а не , или , а также и изменяют и объединяют выражения, вычисленные в логическом контексте, для создания более сложных условий.
Логические выражения, содержащие логические операнды
Как вы видели, некоторые объекты и выражения в Python на самом деле имеют логический тип.То есть они равны одному из объектов Python True или False . Рассмотрим эти примеры:
>>> х = 5
>>> х <10
Правда
>>> тип (x <10)
<класс 'bool'>
>>> т = х> 10
>>> т
Ложь
>>> type (t)
<класс 'bool'>
>>> вызываемый (x)
Ложь
>>> тип (вызываемый (x))
<класс 'bool'>
>>> t = вызываемый (лен)
>>> т
Правда
>>> type (t)
<класс 'bool'>
В приведенных выше примерах x <10 , callable (x) и t являются логическими объектами или выражениями.
Интерпретация логических выражений, включающих , а не , или , а также и , проста, когда операнды являются логическими:
| Оператор | Пример | Значение |
|---|---|---|
не |
не x |
Истина , если x равно Ложь Ложь , если x равно Истина (логически меняет смысл x ) |
или |
x или y |
Истинно , если x или y равно Истинно Ложно в противном случае |
и |
x и y |
Истина , если и x , и y равны Истина Ложь в противном случае |
Посмотрите, как они работают на практике, ниже.
«
, а не » и логические операнды
х = 5
не x <10
Ложь
не вызывается (x)
Правда
| Операнд | Значение | Логическое выражение | Значение |
|---|---|---|---|
x <10 |
Истинно |
не x <10 |
Ложь |
вызываемый (x) |
Ложь |
не подлежит отзыву (x) |
Истинно |
«
или » и логические операнды
х = 5
x <10 или вызываемый (x)
Правда
x <0 или вызываемый (x)
Ложь
| Операнд | Значение | Операнд | Значение | Логическое выражение | Значение |
|---|---|---|---|---|---|
x <10 |
Истинно |
вызываемый (x) |
Ложь |
x <10 или вызываемый (x) |
Истинно |
x <0 |
Ложь |
вызываемый (x) |
Ложь |
x <0 или вызываемый (x) |
Ложь |
«
и » и логические операнды
х = 5
x <10 и вызываемый (x)
Ложь
x <10 и вызываемый (len)
Правда
| Операнд | Значение | Операнд | Значение | Логическое выражение | Значение |
|---|---|---|---|---|---|
x <10 |
Истинно |
вызываемый (x) |
Ложь |
x <10 и вызываемый (x) |
Ложь |
x <10 |
Истинно |
вызываемый (длина) |
Истинно |
x <10 или по запросу (длина) |
Истинно |
Оценка небулевых значений в логическом контексте
Многие объекты и выражения не равны Истина или Ложь .Тем не менее, они могут быть оценены в логическом контексте и определены как «правдивые» или «ложные».
Итак, что правда, а что нет? Как философский вопрос, это выходит за рамки этого урока!
Но в Python это четко определено. Все следующие значения считаются ложными при оценке в логическом контексте:
- Логическое значение
Ложь - Любое числовое значение, равное нулю (
0,0,0,0,0 + 0.0j) - Пустая строка
- Пустой объект встроенного составного типа данных (см. Ниже)
- Специальное значение, обозначенное ключевым словом Python
Нет
Практически любой другой объект, встроенный в Python, считается истинным.
Вы можете определить «истинность» объекта или выражения с помощью встроенной функции bool () . bool () возвращает Истинно, , если его аргумент правдивый, и Ложь, , если он ложный.
Числовое значение
>>>Нулевое значение ложно.
Ненулевое значение истинно.
>>> print (bool (0), bool (0.0), bool (0.0 + 0j))
Ложь Ложь Ложь
>>> print (bool (-3), bool (3.14159), bool (1.0 + 1j))
Правда правда правда
Строка
>>>Пустая строка неверна.
Непустая строка верна.
>>> print (bool (''), bool (""), bool ("" "" ""))
Ложь Ложь Ложь
>>> print (bool ('foo'), bool (""), bool ('' '' ''))
Правда правда правда
Встроенный объект составных данных
>>>Python предоставляет встроенные составные типы данных, которые называются
list,tuple,dictиset.Это «контейнерные» типы, содержащие другие объекты. Объект одного из этих типов считается ложным, если он пуст, и истинным, если он не пуст.Примеры ниже демонстрируют это для списка
типа. (Списки определены в Python в квадратных скобках.)Для получения дополнительной информации о списке
,кортежах,dictинаборах типовсм. Следующие руководства.
>>> тип ([])
<список классов>
>>> bool ([])
Ложь
>>> тип ([1, 2, 3])
<список классов>
>>> bool ([1, 2, 3])
Правда
Ключевое слово «
Нет »
Нет всегда ложно:
Логические выражения, содержащие небулевы операнды
Не-логические значения также могут быть изменены и объединены с помощью , а не , или , а также и .Результат зависит от «истинности» операндов.
«
not » и небулевы операнды
Вот что происходит для не-логического значения x :
Если x - это |
не x равно |
|---|---|
| «правда» | Ложь |
| «ложь» | Истинно |
Вот несколько конкретных примеров:
>>> >>> х = 3
>>> bool (x)
Правда
>>> не х
Ложь
>>> х = 0.0
>>> bool (x)
Ложь
>>> не х
Правда
«
или » и небулевы операнды
Вот что происходит с двумя не-логическими значениями x и y :
Если x - это |
x или y равно |
|---|---|
| правда | x |
| ложь | y |
Обратите внимание, что в этом случае выражение x или y не оценивается как Истина или Ложь , а вместо одного из x или y :
>>> х = 3
>>> у = 4
>>> х или у
3
>>> х = 0.0
>>> у = 4,4
>>> х или у
4.4
Даже в этом случае выражение x или y будет истинным, если либо x , либо y истинно, и ложным, если и x , и y ложны.
«
и » и небулевы операнды
Вот что вы получите для двух не-логических значений x и y :
Если x - это |
x и y равно |
|---|---|
| «правда» | y |
| «ложь» | x |
>>> х = 3
>>> у = 4
>>> х и у
4
>>> х = 0.0
>>> у = 4,4
>>> х и у
0,0
Как и в случае с или , выражение x и y не оценивается как Истинно или Ложно , а вместо этого принимает одно из значений x или y . x и y будут истинными, если и x , и y истинны, и ложными в противном случае.
Составные логические выражения и оценка короткого замыкания
До сих пор вы видели выражения только с одним оператором или или и и двумя операндами:
Несколько логических операторов и операндов могут быть объединены в составные логические выражения.
Составное «
или » Выражения
Рассмотрим следующее выражение:
x 1
илиx 2илиx 3или… x n
Это выражение истинно, если любое из x i истинно.
В таком выражении Python использует методологию, называемую оценкой короткого замыкания, также называемую оценкой Маккарти в честь компьютерного ученого Джона Маккарти.Операнды x i оцениваются в порядке слева направо. Как только одна из них оказывается верной, становится известно, что все выражение истинно. На этом этапе Python останавливается, и термины больше не оцениваются. Значение всего выражения равно значению x i , которое завершило вычисление.
Чтобы продемонстрировать оценку короткого замыкания, предположим, что у вас есть простая «идентификационная» функция f () , которая ведет себя следующим образом:
-
f ()принимает единственный аргумент. - Отображает аргумент в консоли.
- Возвращает переданный ему аргумент в качестве возвращаемого значения.
(Вы увидите, как определить такую функцию в предстоящем руководстве по функциям.)
Несколько примеров вызовов f () показаны ниже:
>>> f (0)
-> f (0) = 0
0
>>> f (Ложь)
-> f (Ложь) = Ложь
Ложь
>>> f (1.5)
-> f (1,5) = 1,5
1.5
Поскольку f () просто возвращает переданный ему аргумент, мы можем сделать выражение f (arg) правдивым или ложным, если необходимо, указав значение для arg , которое является соответственно правдивым или ложным.Кроме того, f () выводит на консоль свой аргумент, который визуально подтверждает, был ли он вызван.
Теперь рассмотрим следующее составное логическое выражение:
>>> >>> f (0) или f (ложь), или f (1), или f (2), или f (3)
-> f (0) = 0
-> f (Ложь) = Ложь
-> f (1) = 1
1
Интерпретатор сначала оценивает f (0) , что составляет 0 . Числовое значение 0 неверно. Выражение еще не соответствует действительности, поэтому оценка выполняется слева направо.Следующий операнд f (False) возвращает False . Это тоже неверно, поэтому оценка продолжается.
Далее идет f (1) . Это составляет 1 , что верно. На этом этапе интерпретатор останавливается, потому что теперь он знает, что все выражение истинно. 1 возвращается как значение выражения, а остальные операнды, f (2) и f (3) , никогда не оцениваются. На дисплее видно, что вызовы f (2) и f (3) не выполняются.
Соединение «
и » Выражения
Аналогичная ситуация существует в выражении с несколькими операторами и :
x 1
иx 2иx 3и… x n
Это выражение истинно, если истинны все x i .
В этом случае оценка короткого замыкания диктует, что интерпретатор прекращает оценку, как только любой операнд оказывается ложным, потому что в этот момент известно, что все выражение ложно.В этом случае операнды больше не вычисляются, и ложный операнд, завершивший вычисление, возвращается как значение выражения:
>>> >>> f (1) и f (ложь) и f (2) и f (3)
-> f (1) = 1
-> f (Ложь) = Ложь
Ложь
>>> f (1) и f (0.0) и f (2) и f (3)
-> f (1) = 1
-> f (0,0) = 0,0
0,0
В обоих приведенных выше примерах оценка останавливается на первом ложном члене - f (False) в первом случае, f (0.0) во втором случае - и не происходит ни одного вызова f (2) или f (3) . False и 0,0 , соответственно, возвращаются как значение выражения.
Если все операнды истинны, все они оцениваются, и последний (крайний правый) возвращается как значение выражения:
>>> >>> f (1) и f (2.2) и f ('bar')
-> f (1) = 1
-> f (2.2) = 2.2
-> f (бар) = бар
'бар'
Идиомы, использующие оценку короткого замыкания
Есть несколько распространенных идиоматических паттернов, которые используют вычисление короткого замыкания для краткости выражения.
Как избежать исключения
Предположим, вы определили две переменные a и b , и вы хотите знать, (b / a)> 0 :
>>> a = 3
>>> b = 1
>>> (б / а)> 0
Правда
Но вы должны учитывать возможность того, что a может быть 0 , и в этом случае интерпретатор вызовет исключение:
>>> a = 0
>>> b = 1
>>> (б / а)> 0
Отслеживание (последний вызов последний):
Файл "", строка 1, в
(б / а)> 0
ZeroDivisionError: деление на ноль
Вы можете избежать ошибки с таким выражением:
>>> >>> a = 0
>>> b = 1
>>> a! = 0 и (b / a)> 0
Ложь
Когда равно 0 , a! = 0 ложно.Оценка короткого замыкания гарантирует, что оценка остановится на этом этапе. (b / a) не оценивается, и ошибка не возникает.
На самом деле, вы можете быть еще более кратким. Когда a равно 0 , выражение a само по себе является ложным. В явном сравнении нет необходимости a! = 0 :
>>> a = 0
>>> b = 1
>>> а и (б / а)> 0
0
Выбор значения по умолчанию
Другая идиома включает выбор значения по умолчанию, когда заданное значение равно нулю или пусто.Например, предположим, что вы хотите присвоить переменной s значение, содержащееся в другой переменной с именем string . Но если строка пуста, вы хотите указать значение по умолчанию.
Вот краткий способ выразить это с помощью оценки короткого замыкания:
s = строка или '<значение по умолчанию>'
Если строка непуста, это правда, и выражение строка или '<значение по умолчанию>' будет истинным в этой точке.Оценка останавливается, и возвращается значение строки и присваивается s :
>>> строка = 'foo bar'
>>> s = строка или '<значение по умолчанию>'
>>> с
'foo bar'
С другой стороны, если строка является пустой строкой, она ложна. Оценка строки или '<значение по умолчанию>' продолжается до следующего операнда '<значение по умолчанию>' , который возвращается и присваивается s :
>>> строка = ''
>>> s = строка или '<значение по умолчанию>'
>>> с
'<значение по умолчанию>'
Цепные сравнения
Операторы сравнения могут быть объединены в цепочку произвольной длины.Например, следующие выражения почти эквивалентны:
х <у <= г
х <у и у <= г
Оба они вычисляют одно и то же логическое значение. Тонкое различие между ними состоит в том, что в цепном сравнении x y оценивается только один раз. Более длинное выражение x y будет вычисляться дважды.
Примечание: В случаях, когда y является статическим значением, это не будет значительным различием.Но рассмотрим эти выражения:
х <е () <= г
x
Если f () - это функция, которая вызывает изменение данных программы, разница между ее вызовом один раз в первом случае и дважды во втором случае может быть важной.
В более общем смысле, если op 1 , op 2 , …, op n являются операторами сравнения, то следующие значения имеют такое же логическое значение:
x 1 op 1 x 2 op 2 x 3 … x n-1 op n 6
x 1 op 1 x 2
x nиx 2 op 2 x 3и… x n-… x n- n
В первом случае каждый x i оценивается только один раз.В последнем случае каждый будет оцениваться дважды, кроме первого и последнего, если только оценка короткого замыкания не приведет к преждевременному завершению.
Побитовые операторы
Побитовые операторы обрабатывают операнды как последовательности двоичных цифр и оперируют ими бит за битом. Поддерживаются следующие операторы:
| Оператор | Пример | Значение | Результат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
и |
a & b |
побитовое И | Каждая битовая позиция в результате является логической И битов в соответствующей позиции операндов.( 1 , если оба равны 1 , иначе 0 .) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |
a | б |
побитовое ИЛИ | Каждая битовая позиция в результате представляет собой логическое ИЛИ битов в соответствующей позиции операндов. ( 1 , если любой из них равен 1 , иначе 0 .) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
~ |
~ |
побитовое отрицание | Каждая битовая позиция в результате является логическим отрицанием бита в соответствующей позиции операнда.б | побитовое XOR (исключающее ИЛИ) | Каждая битовая позиция в результате представляет собой логическое XOR битов в соответствующей позиции операндов. ( 1 , если биты в операндах разные, 0 , если они совпадают.) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>> |
a >> n |
Сдвиг вправо n мест |
Каждый бит сдвигается вправо на n позиций.0b1010)
'0b0110'
>>> '0b {: 04b}'. Формат (0b1100 >> 2)
'0b0011'
>>> '0b {: 04b}'. Format (0b0011 << 2)
'0b1100'
Примечание: Цель Операторы идентификации Python предоставляет два оператора, Вот пример двух одинаковых, но не одинаковых объектов: >>>
Здесь
Ранее вы видели, что когда вы выполняете присвоение типа
В этом случае, поскольку Неудивительно, что противоположность
Приоритет оператораРассмотрим это выражение: Здесь есть двусмысленность.Следует ли Python сначала выполнить сложение Очевидно, поскольку результат Всем операторам, поддерживаемым языком, назначается приоритет.В выражении сначала выполняются все операторы с наивысшим приоритетом. После получения этих результатов выполняются операторы следующего наивысшего приоритета. Так продолжается до тех пор, пока выражение не будет полностью вычислено. Любые операторы с одинаковым приоритетом выполняются слева направо. Вот порядок приоритета операторов Python, которые вы видели до сих пор, от самого низкого до самого высокого:
Операторы вверху таблицы имеют самый низкий приоритет, а операторы внизу таблицы - самый высокий.Любые операторы в одной строке таблицы имеют одинаковый приоритет. Понятно, почему умножение выполняется первым в приведенном выше примере: умножение имеет более высокий приоритет, чем сложение. Аналогичным образом, в приведенном ниже примере,
Приоритет оператора можно изменить с помощью круглых скобок.Выражения в скобках всегда выполняются первыми, перед выражениями, не заключенными в скобки. Таким образом, происходит следующее: >>>
>>>
В первом примере сначала вычисляется Нет ничего плохого в том, чтобы обильно использовать круглые скобки, даже если они не нужны для изменения порядка оценки. Фактически, это считается хорошей практикой, потому что это может сделать код более читаемым и избавляет читателя от необходимости вспоминать приоритет операторов из памяти. Рассмотрим следующее: Здесь круглые скобки совершенно не нужны, поскольку операторы сравнения имеют более высокий приоритет, чем С другой стороны, вероятно, найдутся те, кто предпочел бы последнее; это вопрос личных предпочтений. Дело в том, что вы всегда можете использовать круглые скобки, если считаете, что это делает код более читабельным, даже если они не нужны для изменения порядка оценки. Операторы расширенного присвоения Вы видели, что один знак равенства (
Фактически, выражение справа от присвоения может включать ссылки на переменную, которая назначается: >>>
Первый пример интерпретируется как « Конечно, такое присвоение имеет смысл только в том случае, если рассматриваемой переменной уже было ранее присвоено значение: >>>
Python поддерживает сокращенную нотацию расширенного присваивания для этих арифметических и побитовых операторов:
Для этих операторов следующие эквиваленты: Взгляните на эти примеры:
ЗаключениеВ этом руководстве вы узнали о различных операторах , которые поддерживает Python для объединения объектов в выражения . В большинстве примеров, которые вы видели до сих пор, использовались только простые атомарные данные, но вы видели краткое введение в тип данных string . В следующем учебном пособии более подробно исследуются объекты string . Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Операторы и выражения Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени: Пройти тест » Логика высказыванийЛогика высказыванийЛогические выраженияМы можем определять логические выражения, используя рекурсивное определение:
Уровни приоритета логических операторов:
Присваивая значения переменным в логическом выражении, мы также присваиваем значение самому выражению. Пример: задано выражение «(p AND q) OR r», если p = TRUE, q = TRUE и r = FALSE, то значение выражения - TRUE. Логические функции и таблицы истинностиСмысл (или значение) логического выражения является логическим. функция из множества возможных присвоений истинностных значений для переменных в выражении к значениям {ИСТИНА, ЛОЖЬ}. Пример: используя выражение «(p AND q) OR r», мы можем описать логическая функция, определяющая значение выражения путем рассмотрения всех комбинаций присвоений значений для p, q и r.
p q r (p AND q) ИЛИ r
------------------------------
Т Т Т Т
Т Т Ф Т
Т Ф Т Т
T F F F
F T T T
F T F F
F F T T
F F F F
Приведенная выше таблица с описанием логической функции "(p AND q) OR r" называется таблицей истинности .В таблице истинности есть столбец для каждой переменной в выражение, и каждая строка в таблице соответствует присвоение значений переменным. В последнем столбце указано значение выражения для конкретный набор присвоений переменных, указанный в строке. Мы можем определить основные операторы в терминах таблицы истинности следующим образом (где мы используем 1 и 0 вместо ИСТИНА и ЛОЖЬ):
p q p И q p ИЛИ q НЕ p
------------------------------------
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
Обратите внимание, что таблица истинности для функции N переменных имеет 2 ^ N строк.N различных булевых функций от N переменных. Вот некоторые дополнительные функции двух переменных, которые часто используются:
p q p-> q p == q p NAND q p NOR q
-------------------------------------------
0 0 1 1 1 1
0 1 1 0 1 0
1 0 0 0 1 0
1 1 1 1 0 0
Комментарии к этим функциям:
Вычисление выражений с таблицами истинностиМы можем вычислить значение выражения, используя таблицы истинности.Создаем таблицу для всех возможных значений переменных, и все подвыражения в выражении. Вычислите значение следующего выражения E для всех возможные присвоения истинности: (p -> q) -> (q -> r)
p q r p-> q q-> r E
---------------------------
0 0 0 1 1 1
0 0 1 1 1 1
0 1 0 1 0 0
0 1 1 1 1 1
1 0 0 0 1 1
1 0 1 0 1 1
1 1 0 1 0 0
1 1 1 1 1 1
Обратите внимание, что столбец для значения q-> r такой же как столбец для значения всего выражения E.Мы установили эквивалентность этих двух столбцов, что значит:
(p -> q) -> (q -> r) == q-> r.
Генерация выражений из функцийНам часто дают булеву функцию в виде таблицы истинности. и должен получить соответствующее логическое выражение. Например, цифровые схемы построены из цифровых элементы, которые вычисляют основные логические операции (например, НЕ и И-НЕ). Для конкретной функции, выраженной в виде результатов присвоения переменных (например, схема, которая добавляет два битов вместе и производит сумму и бит переноса, все что выражается в форме таблицы истинности), мы бы как соответствующее логическое выражение, так что мы может построить схему для функции. Мы можем построить такое логическое выражение непосредственно из таблица истинности для функции. Результирующее выражение использует в качестве операторов только AND, OR и NOT. Исключительное Или: выражение из таблицы истинностиИсключающее ИЛИ (XOR) - еще одна хорошо известная функция двух переменных. Таблица истинности для XOR:
p q XOR
---------------
0 0 0
0 1 1
1 0 1
1 1 0
Мы можем построить выражение для XOR в терминах AND, OR и НЕ, используя следующие рассуждения:
Из вышеизложенного мы определяем, что следующее логическое выражение для функции p XOR q:
(НЕ p И q) ИЛИ (p И НЕ q)
Конъюнктивные и дизъюнктивные нормальные формыЛогическое выражение находится в дизъюнктивной нормальной форме если оно выражено как сумма (ИЛИ) произведений (И).То есть логическое выражение B находится в дизъюнктивной нормальной форме если это написано как:
A1 ИЛИ A2 ИЛИ A3 ИЛИ ... An
где каждый Ai выражается как
Т1 И Т2 И ... И Тм
где каждый Ti - простая переменная,
или отрицание (НЕ) простой переменной.
Каждый из терминов Ai называется minterm .
Логическое выражение находится в конъюнктивной нормальной форме если оно выражено как произведение (И) сумм (ИЛИ).То есть логическое выражение B находится в конъюнктивной нормальной форме если это написано как:
O1, O2, O3, и ...
где каждый Oi выражается как
Т1 ИЛИ Т2 ИЛИ ... ИЛИ Tm
где каждый Ti - простая переменная,
или отрицание (НЕ) простой переменной.
Каждый из терминов Oi называется maxterm .
Нормальные формы в таблицах истинностиКонъюнктивные и дизъюнктивные нормальные формы двойственны друг другу; любой из них может использоваться для генерации логического выражения из таблицы истинности. С помощью этих нормальных форм мы можем быть более точными о том, как сгенерировать логическое выражение из таблицы истинности. Чтобы построить логическое выражение в дизъюнктивной нормальной форме из таблица истинности:
Конечно, мы могли бы построить выражение в дизъюнктивном нормальном форма с использованием maxterms и И. Логическое выражение для сумматораДвоичный сумматор целых чисел может быть построен из ряда однобитовых сумматоров. Однобитовый сумматор принимает два однобитовых операнда (x и y) и бит переноса из предыдущего однобитового сумматора (ci), и производит сумму этих битов, и выносной бит (со). Мы можем определить логическую функцию, соответствующую сумматору в виде таблицы истинности. Затем мы можем построить логические выражения для s и co, из которого мы могли построить схему. x y ci co s --------------------- 0 0 0 0 0 0 0 1 0 1 с: НЕ x И НЕ y И ci 0 1 0 0 1 с: НЕ x И y И НЕ ci 0 1 1 1 0 co: НЕ x, y и ci 1 0 0 0 1 с: x И НЕ y И НЕ ci 1 0 1 1 0 co: x И НЕ y И ci 1 1 0 1 0 co: x И y И НЕ ci 1 1 1 1 1 co, s: x, y и ci Логическое выражение для s: (НЕ x И y И ci) ИЛИ (x И НЕ y И ci) ИЛИ (x AND y И НЕ ci) ИЛИ (x AND y AND ci) Логическое выражение для co: (НЕ x И НЕ y И ci) ИЛИ (НЕ x И Y И НЕ ci) ИЛИ (x И НЕ y И НЕ ci) ИЛИ (x И y И ci) Полнота логических операторовПредыдущее построение логического выражения из таблица истинности показала, как представить любую логическую функцию как сумма произведений или произведение сумм. Поскольку мы можем представить любую логическую функцию с помощью И, ИЛИ, и НЕ, эти операторы образуют полный набор для Логические функции. Мы можем показать, что одного оператора И-НЕ достаточно для генерации каждой логической функции, показывая, как реализовать И, ИЛИ, и НЕ с точки зрения NAND.
p q p NAND 1 q NAND 1 p NAND q E1 E2
--------------------------------------------
0 0 1 1 1 0 0
0 1 1 0 1 0 1
1 0 0 1 1 0 1
1 1 0 0 0 1 1
E1: p AND q == ((p NAND q) НЕ ИСТИНА)
E2: p ИЛИ q == ((p НЕ И ИСТИНА) ИЛИ (q НЕ И ИСТИНА))
E3: (НЕ p) == (p НЕ ИСТИНА)
Подобная конструкция может использоваться, чтобы показать, что NOR - это также достаточно для генерации каждой логической функции. Таким образом, мы можем генерировать цифровые схемы для любой булевой функции используя только операторы NAND или NOR (или компоненты). ТавтологииТавтология - это логическое выражение, которое всегда ИСТИНА, независимо от присвоения значений истинности переменным в выражениях. Примеры тавтологий:
Если мы сможем установить, что «LE1 == LE2» является тавтологией, тогда независимо от того, какие значения мы присваиваем переменным в LE1 и LE2, мы знаем, что «LE1 == LE2» имеет значение ИСТИНА. Если «LE1 == LE2» является тавтологией, то мы можем заменить LE2 на LE1. (или наоборот) в любом выражении, без изменения значения выражения. Задача тавтологииИнтересный вопрос - задать ли данное логическое выражение - тавтология. Этот вопрос известен как «проблема тавтологии». Для решения проблемы тавтологии нам достаточно построить таблица истинности логического выражения.кн) время, т.е. экспоненциальное время. Не существует известного алгоритма решения проблемы тавтологии, который занимает меньше экспоненциального времени. Такие проблемы называются "трудноразрешимые", потому что в больших случаях эти проблемы не могут быть решены в разумные сроки. Еще одна такая неразрешимая проблема - это «проблема выполнимости». который спрашивает, есть ли присвоение истинностных значений переменные в логическом выражении, которое делает выражение ИСТИННЫМ.Нет известного алгоритма решения этой проблемы, более того эффективнее, чем перебор всех возможных комбинаций присвоения истинности для переменных. Выражений - CodeQLВыражение оценивается как набор значений и имеет тип. Например, выражение В следующих разделах описаны выражения, доступные в QL. Ссылки на переменныеСсылка на переменную - это имя объявленной переменной. Этот вид выражение имеет тот же тип, что и переменная, к которой оно относится. Например, если вы объявили переменные Вы также можете ссылаться на переменные ЛитералыВы можете выражать определенные значения непосредственно в QL, например числа, логические значения и строки.
Выражения в скобках Выражение в скобках - это выражение в скобках, Диапазоны Выражение диапазона обозначает диапазон значений, упорядоченных между двумя выражениями.Это состоит из
два выражения, разделенные В допустимом диапазоне выражение начала и конца - целые числа, числа с плавающей запятой или даты. Если один из них - это дата, тогда оба должны быть датами. Если одно из них - целое число, а другое - число с плавающей запятой, то оба рассматриваются как плавающие. Установить литеральные выражения Литеральное выражение набора позволяет явный список выбора между несколькими значениями.
Он состоит из набора выражений, разделенных запятыми, заключенных в квадратные скобки ( Значения содержащихся выражений должны быть совместимого типа для допустимого литерального выражения набора.Кроме того, по крайней мере, один из элементов набора должен иметь тип, который является супертипом всех типов. другие содержали выражения. Литералы набораподдерживаются начиная с версии 2.1.0 интерфейса командной строки CodeQL и версии 1.24 LGTM Enterprise. СупервыраженияСупервыражения в QL похожи на супервыражения в других языках программирования, например как Java. Вы можете использовать их в вызовах предикатов, если хотите использовать определение предиката. от супертипа.На практике это полезно, когда предикат наследует два определения от его супертипы. В этом случае предикат должен переопределить эти определения, чтобы избежать двусмысленности. Однако, если вы хотите использовать определение из определенного супертипа вместо написания новое определение, вы можете использовать супервыражение. В следующем примере класс class A extends int {
A () {это = 1}
int getANumber () {результат = 2}
}
class B extends int {
B () {это = 1}
int getANumber () {результат = 3}
}
class C расширяет A, B {
// Необходимо определить `int getANumber ()`; иначе было бы двусмысленно
int getANumber () {
результат = B.super.getANumber ()
}
}
из C c
выберите c, c.getANumber ()
Результат этого запроса: Вызов предикатов (с результатом)Вызов предикатов с результатами сами по себе являются выражениями, в отличие от вызовов предикатов без результатов, которые формулы. Для получения дополнительной информации см. «Вызов предикатов». Вызов предиката с результатом возвращает значения переменной Например, АгрегатыАгрегирование - это отображение, которое вычисляет значение результата из набора входных значений, которые задается формулой. Общий синтаксис: <агрегат> (<объявления переменных> | <формула> | <выражение>) Переменные, объявленные в Упорядоченные агрегаты (а именно: Чтобы указать другой порядок, после В QL доступны следующие агрегаты:
Оценка агрегатовКак правило, совокупная оценка включает следующие шаги:
Давайте применим эти шаги к сумме выберите сумму (int i, int j |
существует (строка s | s = "hello" .charAt (i)) и существует (строка s | s = "world!". charAt (j)) | я)
Если мы изменим Затем рассмотрим следующий запрос: выберите количество (строка s | s = "hello" | s.charAt (_))
Пропуск части агрегацииТри части агрегации не всегда требуются, поэтому часто можно написать агрегирование в более простой форме:
Монотонные агрегаты Помимо стандартных агрегатов, QL также поддерживает монотонные агрегаты.Монотонные агрегаты отличаются от стандартных агрегатов тем, как они справляются с
значения, генерируемые частью формулы
В общем, если
Пример монотонных агрегатовРассмотрим этот запрос: строка getPerson () {result = "Alice" или
result = "Боб" или
result = "Charles" или
результат = "Диана"
}
строка getFruit (строка p) {p = "Алиса" и результат = "Апельсин" или
p = "Алиса" и результат = "Apple" или
p = "Боб" и результат = "Apple" или
p = "Charles" и result = "Apple" или
p = "Чарльз" и результат = "Банан"
}
int getPrice (string f) {f = "Apple" и результат = 100 или
f = "Апельсин" и результат = 100 или
f = "Апельсин" и результат = 1
}
предикат nonmono (строка p, int стоимость) {
p = getPerson () и cost = sum (строка f | f = getFruit (p) | getPrice (f))
}
язык [monotonicAggregates]
предикат моно (строка p, int стоимость) {
p = getPerson () и cost = sum (строка f | f = getFruit (p) | getPrice (f))
}
из строкового варианта, строковое лицо, int стоимость
где вариант = "по умолчанию" и немоно (человек, стоимость) или
вариант = "монотонный" и моно (человек, стоимость)
выберите вариант, человека, стоимость
заказать по варианту, человек
Запрос дает следующие результаты:
Два варианта совокупной семантики отличаются тем, что происходит
когда В этом запросе апельсины доступны по двум разным ценам, а
по умолчанию сумма Если бы на яблоки были две разные цены, монотонная
Сумма Чарльз хочет купить банан, который совсем не продается. в
в случае по умолчанию сумма, произведенная для Чарльза, включает стоимость
яблоко он может купить , но в мононтонном
(Дайана вообще не покупает фруктов, и в обоих вариантах ее общая стоимость
равно 0. Совокупность В реальной практике QL довольно редко используются монотонные агрегаты.
с целью иметь несколько выходных строк, как в «Алисе»
случай этого примера. Более значимым моментом является «Чарльз».
Случай: Пока на бананы нет цены, продукция не производится.
для него. Это означает, что если мы позже узнаем о цене на бананы, мы
не нужно удалять уже созданный выходной кортеж. В
Важность этого заключается в том, что монотонное агрегатное поведение хорошо работает
с семантикой на основе фиксированных точек для рекурсии, поэтому это будет значимым
чтобы позволить предикату Эта возможность использовать рекурсию является основной практической причиной запрос монотонной семантики агрегатов. Рекурсивные монотонные агрегатыМонотонные агрегаты могут использоваться рекурсивно, но рекурсивный вызов может появляться только в выражение, а не в диапазоне.Рекурсивная семантика для агрегатов такая же, как у рекурсивная семантика для остальной части QL. Например, мы могли бы определить предикат для вычисления расстояние узла в графе от листьев следующее: int depth (Node n) {
если не существует (n.getAChild ())
тогда результат = 0
иначе результат = 1 + max (дочерний узел | дочерний элемент = n.getAChild () | глубина (дочерний элемент))
}
Здесь рекурсивный вызов находится в выражении, что является допустимым. Рекурсивная семантика для агрегатов такие же, как рекурсивная семантика для остальной части QL.Если вы понимаете, как агрегаты работают в в нерекурсивном случае вам не составит труда использовать их рекурсивно. Однако это стоит посмотреть, как происходит оценка рекурсивной агрегации. Рассмотрим пример глубины, который мы только что видели со следующим графиком в качестве входных данных (стрелки указывают от детей к родителям):
Затем оценка предиката
Здесь мы видим, что на промежуточных этапах очень важно, чтобы агрегат терпят неудачу, если некоторые из дочерних элементов не имеют значения - это предотвращает добавление ошибочных значений. Любая Общий синтаксис выражения любой (<объявления переменных> | <формула> | <выражение>) Вы всегда должны включать объявления переменных, но части формулы и выражения являются необязательными.
В следующей таблице перечислены некоторые примеры различных форм
Унарные операции Унарная операция - это знак минус ( -6,28 + (10-4) + avg (с плавающей запятой f | f = 3,4 или f = -9,8) -сумма (int i | i in [0 .. 9] | i * i) Знак плюс оставляет значения выражения неизменными, а знак минус принимает арифметические отрицания значений. Бинарные операцииБинарная операция состоит из выражения, за которым следует бинарный оператор, за которым следует другое выражение. Например: 5% 2 (9 + 1) / (-2) «Q» + «L» 2 * мин (с плавающей запятой f | f в [-3 .. 3]) В QL можно использовать следующие бинарные операторы:
Если оба выражения являются числами, эти операторы действуют как стандартные арифметические операторы.Для
Например, Вы также можете использовать ОтливкиПриведение позволяет ограничить тип выражения. Это похоже на литье в других языки, например на Java.
Обратите внимание, что преобразование постфикса эквивалентно преобразованию префикса в круглые скобки - Приведения полезны, если вы хотите вызвать предикат члена, который определен только для более конкретный тип. Например, следующий запрос выбирает Java классы которые имеют прямой супертип под названием «Список»: импорт Java
от типа t
где т.(Класс) .getASupertype (). HasName ("Список")
выберите т
Поскольку предикат Если вы предпочитаете использовать префиксное преобразование, вы можете переписать где ((Класс) t).getASupertype (). hasName ("Список")
Выражения безразличия Это выражение, записанное как одинарное подчеркивание В отличие от других выражений, выражение безразличия не имеет типа. На практике это
означает, что Например, следующий запрос выбирает все символы в строке из строки s где s = "привет".charAt (_) выберите s Предикат 7. Простые операторы - документация Python 3.9.7Простая инструкция состоит из одной логической строки.Несколько простых операторы могут находиться в одной строке, разделенной точкой с запятой. Синтаксис для простые инструкции: simple_stmt :: = 7.1. Выражения Операторы выражений используются (в основном интерактивно) для вычисления и записи
значение или (обычно) для вызова процедуры (функции, которая не возвращает значимого
результат; в Python процедуры возвращают значение
выражение_стмт :: =
Оператор выражения оценивает список выражений (который может быть выражение). В интерактивном режиме, если значение не 7.2. Заявления о переуступкеОператоры присваивания используются для (пере) привязки имен к значениям и для изменения атрибуты или элементы изменяемых объектов: assignment_stmt :: = ( (См. Определение синтаксиса для attributeref , подписка и нарезка .) Оператор присваивания оценивает список выражений (помните, что это может быть одно выражение или список, разделенный запятыми, последний дает кортеж) и назначает единственный результирующий объект каждому из целевых списков слева направо Правильно. Присвоение определяется рекурсивно в зависимости от формы цели (списка). Когда цель является частью изменяемого объекта (ссылка на атрибут, подписка или нарезка), изменяемый объект должен в конечном итоге выполнить присваивание и принять решение о его действительности и может вызвать исключение, если присвоение неприемлемо.Правила, соблюдаемые различными типами, и возникающие исключения: дается с определением типов объектов (см. раздел Стандартная иерархия типов). Назначение объекта целевому списку, необязательно заключенное в круглые скобки или квадратных скобок, рекурсивно определяется следующим образом.
Присвоение объекта одной цели рекурсивно определяется следующим образом.
Детали реализации CPython: В текущей реализации синтаксис для целей считается таким же что касается выражений, а недопустимый синтаксис отклоняется во время генерации кода фазы, вызывая менее подробные сообщения об ошибках. Хотя определение присвоения подразумевает, что
левая и правая части являются «одновременными» (например, x = [0, 1] я = 0 i, x [i] = 1, 2 # i обновляется, затем x [i] обновляется печать (х) См. Также
7.2.1. Операторы с расширенными присваиваниямиРасширенное присваивание - это комбинация в одном операторе двоичного операция и заявление о присвоении: augmented_assignment_stmt :: = (См. Раздел "Основные" для определения синтаксиса последних трех символы.) Расширенное задание оценивает цель (которая, в отличие от обычного операторов, не может быть распаковкой) и список выражений, выполняет двоичный операция, специфичная для типа присваивания двух операндов, и присваивает результат к исходной цели. Цель оценивается только один раз. Расширенное выражение присваивания, такое как В отличие от обычных заданий, расширенные задания оценивают левую часть
до , оценивая правую часть. Например, сначала За исключением назначения кортежам и нескольким целевым объектам в одном оператор, присваивание, выполняемое операторами расширенного присваивания, обрабатывается так же, как и обычные задания. Аналогично, за исключением возможных на месте , двоичная операция, выполняемая с помощью расширенного присваивания, то же, что и обычные бинарные операции. Для целей, которые являются ссылками на атрибуты, то же предостережение относительно класса и атрибуты экземпляра применяются как для обычных назначений. 7.2.2. Аннотированные отчеты о присвоенииНазначение аннотации - это комбинация в одном оператор, аннотации переменной или атрибута и необязательный оператор присваивания: annotated_assignment_stmt :: = Отличие от обычных операторов присваивания в том, что разрешена только одна цель. Для простых имен в качестве целей назначения, если они находятся в области класса или модуля,
аннотации оцениваются и сохраняются в специальном классе или модуле
атрибут Для выражений в качестве целей присваивания аннотации оцениваются, если в области класса или модуля, но не хранится. Если имя аннотировано в области действия функции, то это имя является локальным для этот объем. Аннотации никогда не оцениваются и не сохраняются в областях видимости функций. Если правая сторона присутствует, аннотированный
присваивание выполняет фактическое присваивание перед оценкой аннотаций
(где применимо). Если правая часть отсутствует в выражении
target, то интерпретатор оценивает цель, кроме последнего
См. Также
Изменено в версии 3.8: Теперь аннотированные присваивания позволяют использовать те же выражения в правой части, что и регулярные задания. Ранее некоторые выражения (например, без скобок выражения кортежа) вызвали синтаксическую ошибку. 7.3. утверждает заявление
Операторы Assert - удобный способ вставки утверждений отладки в программа: assert_stmt :: = "assert" Простая форма, , если __debug__:
если не выражение: поднять AssertionError
Расширенная форма, , если __debug__:
если не выражение1: поднять ошибку AssertionError (выражение2)
Эти эквиваленты предполагают, что Назначение 7.4. Пропуск, выписка
pass_stmt :: = "пройти" def f (arg): передать # функцию, которая (пока) ничего не делает class C: передать # класс без методов (пока) 7.5. Заявление del
del_stmt :: = "del"
Удаление определяется рекурсивно, очень похоже на способ определения присваивания. Вместо того, чтобы подробно описывать это, вот несколько советов. При удалении целевого списка рекурсивно удаляются все целевые объекты слева направо. Удаление имени удаляет привязку этого имени к локальному или глобальному
пространство имен, в зависимости от того, встречается ли имя в глобальном операторе Удаление ссылок на атрибуты, подписок и срезов передается в задействованный первичный объект; удаление среза в общем эквивалентно присвоение пустого среза правильного типа (но даже это определяется нарезанный объект). Изменено в версии 3.2: Ранее было запрещено удалять имя из локального пространства имен, если оно встречается как свободная переменная во вложенном блоке. 7.6. возврат выписка
return_stmt :: = "return" [
Если список выражений присутствует, он оценивается, иначе При возврате В функции генератора оператор В функции асинхронного генератора пустой оператор 7.7. yield выписка
yield_stmt :: =
Оператор yield yield эквивалентны операторам выражения yield (yield Выражения и операторы Yield используются только при определении генератора функции и используются только в теле функции генератора.Использование yield в определении функции достаточно, чтобы это определение создало функция генератора вместо нормальной функции. Для получения полной информации о семантике выхода 7,8. Оператор подъема
raise_stmt :: = "raise" [ Если никаких выражений нет, В противном случае, Тип исключения - это класс экземпляра исключения, значение - это сам экземпляр. Объект трассировки обычно создается автоматически при возникновении исключения.
и прикреплен к нему как атрибут возбудить исключение ("произошло foo"). With_traceback (tracebackobj)
Предложение >>> попробуйте:
... печать (1/0)
... кроме Exception as exc:
... поднять RuntimeError ("Произошло что-то плохое") из exc
...
Отслеживание (последний вызов последний):
Файл "
Аналогичный механизм работает неявно, если исключение возникает внутри
обработчик исключений или предложение >>> попробуйте:
... печать (1/0)
... Кроме:
... поднять RuntimeError ("Произошло что-то плохое")
...
Отслеживание (последний вызов последний):
Файл "
Цепочку исключений можно явно подавить, указав >>> попробуйте:
... печать (1/0)
... Кроме:
... поднять RuntimeError ("Что-то плохое случилось") из None
...
Отслеживание (последний вызов последний):
Файл "
Дополнительную информацию об исключениях можно найти в разделе Исключения, а информация об обработке исключений находится в разделе Оператор try. Изменено в версии 3.3: Новое в версии 3.3: Атрибут 7.9. Разрыв Отчет
break_stmt :: = "перерыв" Разрыв Завершает ближайший замыкающий цикл, пропуская дополнительный Если цикл Когда 7.10. продолжить выписка
continue_stmt :: = "продолжить" Когда 7.11. импорт ведомость
import_stmt :: = "import" Основной оператор импорта (№
Если оператор содержит несколько предложений (разделенных запятые) два шага выполняются отдельно для каждого предложения, просто как если бы статьи были разделены на отдельные статьи заявления. Детали первого шага, поиска и загрузки модулей описаны в подробнее в разделе о системе импорта, в котором также описаны различные типы пакетов и модулей, которые могут быть импортированным, а также все хуки, которые можно использовать для настройки система импорта. Обратите внимание, что сбои на этом этапе могут указывать на либо что модуль не может быть найден, или что ошибка произошла во время инициализация модуля, которая включает выполнение кода модуля. Если запрошенный модуль получен успешно, он будет выполнен доступен в локальном пространстве имен одним из трех способов:
Форма
Примеры: import foo # foo импортировано и привязано локально import foo.bar.baz # foo.bar.baz импортировано, foo привязано локально импортировать foo.bar.baz как fbb # foo.bar.baz импортировать и привязать как fbb from foo.bar import baz # foo.bar.baz импортирован и привязан как baz from foo import attr # foo import и foo.attr привязан как attr Если список идентификаторов заменить звездочкой ( общедоступных имен , определенных модулем, определяются путем проверки
пространство имен для переменной с именем Форма импорта с подстановочными знаками - При указании импортируемого модуля необязательно указывать абсолютный
имя модуля. Когда модуль или пакет содержится в другом
package можно сделать относительный импорт в том же самом верхнем пакете
без упоминания имени пакета. Используя ведущие точки в
указанный модуль или пакет после Вызывает событие аудита 7.11.1. Отчетность о будущемОператор будущего - это указание компилятору, что конкретный модуль должен быть скомпилирован с использованием синтаксиса или семантики, которые будут доступны в указан будущий выпуск Python, в котором функция станет стандартной. Заявление о будущем предназначено для облегчения перехода на будущие версии Python. которые вносят несовместимые изменения в язык. Это позволяет использовать новые функции для каждого модуля до выпуска, в котором функция становится стандарт. future_stmt :: = "from" "__future__" "import" Заявление о будущем должно появиться в верхней части модуля.Единственные строки, которые могут появиться перед будущим выпиской: Единственная функция, которая требует использования оператора future, - это
Все исторические особенности, включенные в будущий отчет, по-прежнему распознаются
на Python 3. Список включает Отчет о будущем распознается и обрабатывается специально во время компиляции: Изменения к семантике основных конструкций часто реализуются путем генерации другой код. Может даже случиться так, что новая функция вводит новые несовместимый синтаксис (например, новое зарезервированное слово), и в этом случае компилятор может потребоваться разобрать модуль по-другому. Такие решения нельзя оттолкнуть до времени выполнения. Для любого данного выпуска компилятор знает, какие имена функций были определены, и вызывает ошибку времени компиляции, если будущий оператор содержит функцию, не ему известно. Прямая семантика времени выполнения такая же, как и для любого оператора импорта: есть
стандартный модуль Интересная семантика времени выполнения зависит от конкретной функции, включенной будущее заявление. Обратите внимание, что в выписке нет ничего особенного: импорт __future__ [как имя] Это не заявление о будущем; это обычный оператор импорта без особая семантика или синтаксические ограничения. Код, скомпилированный вызовами встроенных функций Будущее выражение, введенное в подсказке интерактивного интерпретатора, вступит в силу.
до конца сеанса переводчика. Если интерпретатор запускается с
См. Также
7.12. Глобальный отчет
global_stmt :: = "global" Заявление Имена, перечисленные в глобальном операторе Имена, перечисленные в глобальном заявлении Детали реализации CPython: Текущая реализация не применяет некоторые из этих ограничений, но программы не должны злоупотреблять этой свободой, поскольку будущие реализации могут потребовать их или молча изменить смысл программы. Примечание программиста: 7.13. Нелокальный отчет
nonlocal_stmt :: = "нелокальный" Нелокальный оператор Имена, перечисленные в нелокальном заявлении Имена, перечисленные в нелокальном операторе См. Также
Двоичный калькуляторИспользуйте следующие калькуляторы для сложения, вычитания, умножения или деления двух двоичных значений, а также для преобразования двоичных значений в десятичные и наоборот. Двоичное вычисление - сложение, вычитание, умножение или делениеПреобразовать двоичное значение в десятичноеПреобразовать десятичное значение в двоичноеКалькулятор RelatedHex | Калькулятор IP-подсети Двоичная система счисления - это система счисления, которая функционирует практически идентично десятичной системе счисления, с которой люди, вероятно, более знакомы.В то время как в десятичной системе счисления используется число 10 в качестве основы, в двоичной системе используется 2. Кроме того, хотя в десятичной системе используются цифры от 0 до 9, в двоичной системе используются только 0 и 1, и каждая цифра называется битом. . Помимо этих различий, такие операции, как сложение, вычитание, умножение и деление, все вычисляются по тем же правилам, что и десятичная система. Практически все современные технологии и компьютеры используют двоичную систему из-за простоты ее реализации в цифровых схемах с использованием логических вентилей.Намного проще разработать оборудование, которое должно определять только два состояния: включено и выключено (или истина / ложь, присутствует / отсутствует и т. Д.). Использование десятичной системы требует оборудования, которое может обнаруживать 10 состояний для цифр от 0 до 9, что является более сложным. Ниже приведены некоторые типичные преобразования между двоичными и десятичными значениями: Двоичное / десятичное преобразование
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||