Как найти нули в двоичной записи числа

Значащие нули в двоичной записи числа

Значащие нули – это нули, которые нельзя отбросить. Если отбросить значащие нули из числа, получится совершенно другое число. Этим они отличаются от незначащих нулей, которые можно отбросить из числа, и оно никак не изменится.

Значащие нули в двоичной записи числа присутствуют в задачах ЕГЭ по информатике для 11 класса под номером 1 (Двоичная система счисления).

Приведем пример значащих и незначащих нулей в двоичной записи числа:

Пусть у нас есть двоичное число:

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

А все остальные нули в этом числе являются значащими, поскольку если убрать из числа любой из них, то получится совершенно другое число. Например, если убрать из числа последний нуль, то новое число 0011101012 будет неравно исходному.

Поделитесь статьей с одноклассниками «Значащие нули в двоичной записи числа – определение и примеры».

Что такое значащие 0 и 1 (задание А1 ЕГЭ информатика)?

Значащие нули – это нули, которые нельзя отбросить. Если отбросить значащие нули из числа, получится совершенно другое число. Это главное их отличие от незначащих нулей, которые можно отбросить из числа, и оно никак не изменится.

Приведу в пример десятичное число 122, которое в двоичной будет иметь следующий вид : . 001111010

Там где стоит многоточие и до единицы расположены незначащие нули. Их можно отбросить и получить следующий вид этого же числа — 1111010.

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

Это одно из фундаментальных правил, которое вы должны запомнить, чтобы безошибочно решать первое задание из ЕГЭ по информатике.

Значащие нули в двоичной записи числа

Значащие нули – это нули, которые нельзя отбросить. Если отбросить значащие нули из числа, получится совершенно другое число. Этим они отличаются от незначащих нулей, которые можно отбросить из числа, и оно никак не изменится.

Значащие нули в двоичной записи числа присутствуют в задачах ЕГЭ по информатике для 11 класса под номером 1 (Двоичная система счисления).

Пример:

Пусть у нас есть двоичное число:

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

А все остальные нули в этом числе являются значащими, поскольку если убрать из числа любой из них, то получится совершенно другое число. Например, если убрать из числа последний нуль, то новое число 0011101012 будет неравно исходному.

Если материал понравился Вам и оказался для Вас полезным, поделитесь им со своими друзьями!

РМО учителей информатики.
Тема. Двоичное представление информации. Поиск основания системы
счисления. Решение уравнений. Подсчет количества единиц (нулей, двоек
и т.д.)в записи выражения в системе счисления с основанием n. 
Задания данного типа относятся к заданиям базового уровня и требуют
навыков   прямо   применять   изученное   правило.   В   ЕГЭ   это   единственное
задание на воспроизведение знаний и умений. Несмотря на простоту данных
заданий, здесь важно не просто обладать знаниями о методах перевода между
различными   системами   счисления   и   представления   чисел   в   памяти
компьютера,   но   делать   это   быстро,   четко,   наиболее   простым   и   удобным
способом. Максимальное количество времени, которое можно потратить на
выполнение таких заданий во время экзамена, ­ не более 1 минуты. Очень
важна   практика,   почти   автоматизм   в   выполнении   действий.   Большинство
ошибок, совершаемых в таких заданиях, следуют из­за невнимательности и
арифметических неточностей.
Что нужно знать! (взяла у К. Полякова – что нравится: кратко, четко,
без воды!)

перевод чисел между десятичной, двоичной, восьмеричной и
шестнадцатеричной системами счисления (см. презентацию «Системы
счисления»)
Полезно помнить, что в двоичной системе:


четные числа оканчиваются на 0, нечетные – на 1;
числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа,
которые делятся на 2k, оканчиваются на k нулей
если число N принадлежит интервалу 2k-1  N < 2k, в его двоичной
записи будет всего k цифр, например, для числа 125:
26 = 64  125 < 128 = 27, 125 = 11111012 (7 цифр)
числа вида 2k записываются в двоичной системе как единица и k
числа вида 2k-1 записываются в двоичной системе k единиц,




нулей, например:
16 = 24 = 100002
например:
15 = 24-1 = 11112
если известна двоичная запись числа N, то двоичную запись числа
2·N можно легко получить, приписав в конец ноль, например:
15 = 11112,
30 = 111102, 60 = 1111002,
120 = 11110002
 желательно выучить наизусть таблицу двоичного представления
чисел 0-7 в виде триад (групп из 3-х битов); 

 и таблицу двоичного представления чисел 0-15

шестнадцатеричной системе – 0-F16) в виде тетрад (групп из 4-х
битов);
отрицательные целые числа хранятся в памяти в двоичном
дополнительном коде;
для перевода отрицательного числа (­a) в двоичный
дополнительный код нужно сделать следующие операции:
o перевести число a­1 в двоичную систему счисления;
o сделать инверсию битов: заменить все нули на единицы и единицы
на нули в пределах разрядной сетки;
o прибавить единицу.
Рассмотрим на конкретных примерах:
1. Поиск основания системы счисления.
Пример 1. В системе счисления с некоторым основанием десятичное число 27
записывается в виде 30. Укажите это основание.
Решение
Обозначим искомое основание х.
Тогда, запишем число 30х запишем через развернутую форму записи числа.  
27 = 30х = 0 ∙ х0+ 3 ∙ х1 = 3 ∙ х .То есть х = 27: 3, х = 9
 Ответ: 9.
Задания для самостоятельного решения по аналогии.
Задача 1. В системе счисления с некоторым основанием десятичное число 13 
записывается в виде 111. Укажите это основание. 
P.S. 
а. число 111х переводим в 10 сс через развернутую форму записи числа:
111х = 1∙х0 + 1∙х1 + 1 ∙х2; х2 + х + 1 = 13; х2 + х ­12 = 0.
б. При решении  квадратного уравнения через дискриминант исключаем 
отрицательный корень, т.к. основание системы счисления не может быть
отрицательным!
Ответ: 3.
Задача 2. Укажите наибольшее число, двоичная запись которого содержит 
ровно три значащих нуля и две единицы. Ответ запишите в десятичной СС.
PS 
 .
 а. Значащие нули НЕ могут располагаться в самом начале числа. В начале
– единица!
б. Вспомним формулу перевода двоичного числа в десятичное: чем левее в 
двоичном числе единица, бОльшая степень двойки входит в качестве 
слагаемого в эту запись. Следовательно, максимальное значение двоичного
числа получится, если все единицы будут в старших разрядах. в. Так как требуется, чтобы в записи числа было ровно три значащих нуля 
и две единицы – число 5­разрядное. Логично предположить, что это число
110002.
Г. Смотрим на условие задания: ответ должен быть представлен в 10сс. 
Переводим из 2сс в 10 сс через развернутую форму записи числа. 
110002 = 24 + 23 = 16+8=24
Ответ: 24
2.
Решение уравнений.
Пример 2. Решите уравнение: 121х + 110 = 1017. Ответ запишите в троичной 
системе (основание системы счисления в ответе писать не нужно).
Решение
121х+ 110= 1017  
Переведем все числа в десятичную систему счисления:
1∙х0 + 2∙х1+ 1∙х2 +1 = 1 • 70 + 0 •71 + 1∙72;
1 + 2∙х + х2+1 = 1 + 49;
х2 + 2∙ х — 48 = 0.
Квадратное уравнение имеет корни — 8 и 6. х = 610
(так как основание системы не может быть отрицательным).
610 = 203.
Ответ: 20. 
Задание для самостоятельного решения по аналогии.
Задача 3. Известно, что для целого числа х выполнено: 334+х  ­ 334 = 3310. 
Определите значение х. Ответ запишите в десятичной СС.
P.S. Преобразование обоих недесятичных чисел в десятичную СС.
Ответ 11.
3.
Подсчет количества единиц (нулей, двоек и т.д.) в записи
выражения в системе счисления с основанием n.
Для   решения   этого   типа   задач   нужно   вспомнить,   как   происходит
сложение и вычитание  «в столбик».
В двоичной системе счисления количество значащих нулей легко найти
как разность общего количества разрядов в числе и количества единиц в нем,
поэтому если знаем количество нулей в двоичной СС, то можно легко найти
количество единиц.
При   сложении   в   системах   счисленияпроисходит   поразрядное
суммирование записанных друг за другом цифр, начиная с младших разрядов.
В системах счисления,   отличных от 2 сс, в случае, если полученная сумма
двух   цифр   больше   или   равна   основанию   системы   счисления,   под
суммируемыми   цифрами   записывается   остаток   от   деления   этой   суммы   на основание   системы,   а   целая   часть   от   деления   этой   суммы   на   основание
системы прибавляется к сумме следующих разрядов.
При   вычитании   происходит   поразрядное   вычитание   записанных   друг
под другом цифр, начиная с младших разрядов. В случае, если первая цифра
меньше   второй,   мы   «занимаем»   у   соседнего   (большего)   разряда   единицу.
Занимаемая единица в текущем разряде равна основанию системы счисления.
В привычной 10 сс – это 10, в двоичной – это 2, в троичной – это 3 т.д.
Пример 3.
Сколько единиц содержится в двоичной записи значения выражения: 
81000 + 4500 – 2250 + 3?
Решение:
1. Все числа, кроме последнего, представим как степени двоек ( 8 = 23, 4 =
22).   Число   3,   учитывая   ограниченное   число   единиц   в   его   двоичной
записи (всего 2 единицы), просто переведем в 2 сс (112) и так запишем,
получим выражение: 23000 + 21000 – 2250 + 112.
2. Вспоминаем шпаргалки  К. Полякова: двоичное число вида 2N содержит
одну единицу в позиции с номером  N  (при общепринятой нумерации
позиций   справа   налево,   начиная   с   нуля)   и  N  нулей   в   последующих
позициях.
3. Прежде   чем   перейти   к   непосредственному   нахождению   значения
данного   выражения,   вспомним   операции   сложения   и   вычитания   в
двоичной системе счисления:
3.1. При сложении двух двоичных чисел 2N и 2М (считая, что N >M) мы в
число, состоящее из единицы в  N­ой позиции и остальных нулей, просто
добавляем еще одну единицу в позицию с номером М. пример:
25 + 23 = 1000002 + 10002 = 1010002
разряды
25 в двоичной сс
23 в двоичной сс
сумма
5
 1
1
4
0
0
3
2
1
0
0
1
1
0
0
0
0
0
0
0
0
0
3.2. Вычитание   двоичной   единицы   из   двоичного   нуля   производится
заёмом из предыдущих разрядов. При этом заём распространяется
влево,   пока   не   дойдёт   до   первой   же   встреченной   единицы.   Эта
единица и затрачивается на очередной заем, а далее вправо в числе
уже ничего не меняется. Пример: 
100000
001000
011000 Тем самым при вычитании двоичных чисел 2N и 2М (N >M) за счет заёмов из
старших разрядов получаем число, в котором сначала записаны N – М единиц
( в нашем случае 5­3 = 2 единицы), а затем М нулей (в нашем случае – 3 нуля). 
Еще
 
28 – 23 = 100000000 – 1000 = 
пример
этому:
к
 
 
 
8
7
1
6
1
5
1
4
1
3
1
2
0
1
0
0
0
                                                                единица в позиции 8 затрачена на заёмы
4. Используя   эти   знания,   продолжаем   решение   задачи   для   полученного
выражения 23000 + 21000 – 2250 + 112.
Первое значение 23000 дает нам одну единицу в позиции 3000.
Пара значений 21000 – 2250 дает нам число, в котором имеется 750 единиц
(1000­250).
Сложение это числа с первым дает в сумме 751 единицу, а последние
число   112  (уже   представленное   в   двоичной   СС)   добавляет   еще   2
единицы. Итого получаем: 751 (единица) + 2 (единицы) = 753 единицы.
Ответ: 753.
Пример 4. Значение арифметического выражения 3432017 + 49500 – 7777 +
3 записано в системе счисления с основанием 7. Сколько шестерок и
сколько значащих нулей содержится в этой записи?
Решение.
1. Представляем все числа как степени семерок:
3432017 + 49500 – 7777 + 3 = (73)2017 + (72)500 ­ 7777 + 3 = 76051 + 71000 ­7777 + 3.
Проверим, что степени записаны в порядке убывания.
2. Самое   первое   значение   3432017  дает   только   единицу,   поэтому   в
подсчетах   шестерок   не   участвует.   Нам   важно   лишь   количество
разрядов в семеричном числе, очевидно, равно 2018, и из них  2017
нулей.
3. Разность 71000 – 7777 дает 1000­777 = 223 шестерки (все остальное –
нули).
4. Последняя тройка нас тоже не интересует, отметим просто, что этот
последний разряд числа получается ненулевым. 
5. Тогда   количество  шестерок  в   значении   выражения   равно   223,
количество нулей вычисляется как 2017­223­1 =  1793, где 2017 –
количество   нулей   в   числе  3432017  в  троичной   записи   числа,  223 –
количество шестерок от разности 71000 – 7777, а 1 – число 3. Ответ: 223 шестерки и 1793 нуля.
Встречаются также задания на поиск чисел в выражениях, содержащих два и
более вычитаний подряд, например:
Пример 5. Сколько значащих нулей в двоичной записи числа 8256 + 16256 – 2128
– 245?
Решение.
Прежде   всего   заметим,   что   в   двоичной   системе   счисления   количество
значащих нулей легко найти как разность общего количества разрядов в числе
и   количества   в   нем   единиц,   поэтому   данная   задача,   по   сути   на   поиск
количества единиц в числе.
1. Представляем   все   числа   как   степени   двоек.   Число   245   представим
выражение 256­8­2­1 и тоже посредством степеней двоек:
8256 + 16256 – 2128 – 245 = 2768 + 21024 – 2128 – (28 – 23 – 21 – 20)  = 
= 2768 + 21024 – 2128 ­ 28 + 23 + 21 + 20.
2. Перепишем выражение по убыванию степеней двоек:
2768 + 21024 – 2128 ­ 28 + 23 + 21 + 20 = 21024+2768– 2128 ­ 28 + 23 + 21 + 20.
3. Можно   было   бы   применить   уже   занкомое   нам   правило   определения
количества   единиц   в   разности   чисел,   но   здесь   у   нас   идет   сразу   два
вычитания   подряд.   Попытаемся   свести   эту   разность   к   сумме   двух
отдельных разностей
! запомним правило (нашла в одном справочнике по подготовке к ЕГЭ!):
­2N = ­2N+1 + 2N.
Пользуясь этим правилом, заменим число ­2128 на сумму  ­ 2129 + 2128. 
Получаем:
21024+2768– 2128 ­ 28 + 23 + 21 + 20 = 21024+2  768   – 2 
 8 + 23 + 21 + 20.
 129 + 2  128   ­ 2 
4. Теперь в выражении имеем две отдельные разности степеней двоек и 
операции сложения, с которыми работать мы умеем. Производим 
подсчет единиц: 21024 дает 1 единицу; разность 2  768   – 2 
(768­129 = 639); разность 2  128   ­ 2 
 8 дает еще 120 единиц (128­8 = 120), а 
каждое слагаемое из суммы 23 + 21 + 20 добавляет по 1 единице. Всего 
получится 1 + 639 + 120 + 1 + 1 + 1 = 763 единицы.
 129 дает 639 единиц 
5. Находим количество значащих нулей: общее количество значащих 
нулей определяется самой старшей степенью двойки, в нашем случае
– числом 21024. Такое число, как мы знаем, содержит единицу в старшем 
разряде и 1024 нуля после нее, т.е. общая длина знаков 1025. Тогда 
количество значащих нулей в ответе равно 1025­763 = 262.
Ответ: 262.
1. Поляков К.Ю. http 
2. Есакова Л.Б. Информатика: авторский курс подготовки к ЕГЭ,2018.
 .  ru;
Использованная литература:
 ://   kpolyakov
 .  spb 3. Самылкина Н.Н. ЕГЭ 2019. Информатика: задания, ответы, 
комментарии. 2018.
4. Задания открытого банка ФИПИ.
Подготовила Миндалиева Карлгаш Серекбаевна, 
учитель информатики МОУ – СОШ с. Приволжское 
Марксовского района Саратовской области
Раздаточный
материал 1. В   системе   счисления   с   некоторым   основанием   десятичное  число   27
записывается в виде 30. Укажите это основание.
2. В   системе   счисления   с   некоторым   основанием   десятичное   число   13
записывается в виде 111. Укажите это основание.
3. Решите уравнение: 121х + 110 = 1017. Ответ запишите в троичной системе
(основание системы счисления в ответе писать не нужно).
4. Известно,   что   для   целого   числа   х   выполнено:   334+х 
Определите значение х. Ответ запишите в десятичной СС.
  ­   334  =   3310.
5. Сколько единиц содержится в двоичной записи значения выражения: 
81000 + 4500 – 2250 + 3?
6. Значение арифметического выражения 3432017 + 49500 – 7777 + 3 записано
в   системе   счисления   с   основанием   7.   Сколько   шестерок   и   сколько
значащих нулей содержится в этой записи?
7. Сколько значащих нулей в двоичной записи числа 8256  + 16256  – 2128  –
245?
1. В   системе   счисления   с   некоторым   основанием   десятичное  число   27
записывается в виде 30. Укажите это основание.
2. В   системе   счисления   с   некоторым   основанием   десятичное   число   13
записывается в виде 111. Укажите это основание.
3. Решите уравнение: 121х + 110 = 1017. Ответ запишите в троичной системе
(основание системы счисления в ответе писать не нужно). 4. Известно,   что   для   целого   числа   х   выполнено:   334+х 
Определите значение х. Ответ запишите в десятичной СС.
  ­   334  =   3310.
5. Сколько единиц содержится в двоичной записи значения выражения: 
81000 + 4500 – 2250 + 3?
6. Значение арифметического выражения 3432017 + 49500 – 7777 + 3 записано
в   системе   счисления   с   основанием   7.   Сколько   шестерок   и   сколько
значащих нулей содержится в этой записи?
7. Сколько значащих нулей в двоичной записи числа 8256  + 16256  – 2128  –
245?
1. В   системе   счисления   с   некоторым   основанием   десятичное  число   27
записывается в виде 30. Укажите это основание.
2. В   системе   счисления   с   некоторым   основанием   десятичное   число   13
записывается в виде 111. Укажите это основание.
3. Решите уравнение: 121х + 110 = 1017. Ответ запишите в троичной системе
(основание системы счисления в ответе писать не нужно).
4. Известно,   что   для   целого   числа   х   выполнено:   334+х 
Определите значение х. Ответ запишите в десятичной СС.
  ­   334  =   3310.
5. Сколько единиц содержится в двоичной записи значения выражения: 
81000 + 4500 – 2250 + 3?
6. Значение арифметического выражения 3432017 + 49500 – 7777 + 3 записано
в   системе   счисления   с   основанием   7.   Сколько   шестерок   и   сколько
значащих нулей содержится в этой записи?
7. Сколько значащих нулей в двоичной записи числа 8256  + 16256  – 2128  –
245?
Полезно знать! (Взято у К.Ю. Полякова http 
 
четные числа оканчиваются на 0, нечетные – на 1;
числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа,
 ://   kpolyakov
 .  spb 
 .  ru )
которые делятся на 2k, оканчиваются на k нулей
если число N принадлежит интервалу 2k-1  N < 2k, в его двоичной
записи будет всего k цифр, например, для числа 125:
26 = 64  125 < 128 = 27, 125 = 11111012 (7 цифр)
числа вида 2k записываются в двоичной системе как единица и k
числа вида 2k-1 записываются в двоичной системе k единиц,

если известна двоичная запись числа N, то двоичную запись числа 2·N
можно легко получить, приписав в конец ноль, например:
15 = 11112, 30 = 111102, 60 = 1111002, 120 = 11110002
­2N = ­2N+1 + 2N;

для перевода отрицательного числа (­a) в двоичный

дополнительный код нужно сделать следующие операции:
o перевести число a­1 в двоичную систему счисления;





нулей, например:
16 = 24 = 100002
например:
15 = 24-1 = 11112. o сделать инверсию битов: заменить все нули на единицы и единицы
на нули в пределах разрядной сетки;
o прибавить единицу.
Необходимо знать наизусть таблицу двоичного представления чисел
0-7 в виде триад
Х10, х8
Х2
000
001
010
011


0
1
2
3
Х10, х8
4
5
6
7
Х2
100
101
110
111
и таблицу двоичного представления чисел 0-15 (в
шестнадцатеричной системе – 0-F16) в виде тетрад.
Х10
0
1
2
3
4
5
6
7
Х2
0000
0001
0010
0011
0100
0101
0110
0111
Х2
1000
1001
1010
1011
1100
1101
1110
1111
Х10
8
9
10
11
12
13
14
15
Х16
8
9
A
B
C
D
E
F

Формулировка задания: Количество значащих нулей в двоичной записи десятичного числа N равно X.

Задание входит в ЕГЭ по информатике для 11 класса под номером 1 (Двоичная система счисления).

Рассмотрим, как решаются подобные задания на примере.

Пример задания:

Количество значащих нулей в двоичной записи десятичного числа 222 равно:

  1. 5
  2. 2
  3. 3
  4. 4

Решение:

Переведем число 222 из десятичной системы счисления в двоичную:

Количество значащих нулей в двоичной записи десятичного числа

В результате получено, что:

22210 = 110111102

В данном примере у числа 110111102 все нули являются значащими (их нельзя отбросить).Таким образом, в двоичной записи десятичного числа 239 есть 2 значащих нуля, то есть нужно выбрать ответ номер 2.

Ответ: 2

Поделитесь статьей с одноклассниками «Количество значащих нулей в двоичной записи десятичного числа – как решать».

При копировании материалов с сайта ссылка на источник обязательна. Уважайте труд людей, которые вам помогают.
Нашли ошибку? Выделите текст и нажмите Ctrl + Enter.

Раздел:
Задачи /
Простейшие /

Найти количество нулей в двоичном числе

Основы программирования 2.0

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать.
Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь.
Подробнее…

Условие задачи 2.145

Задача 2.145
Дан массив А, состоящий из N натуральных чисел. Вывести на экран количество чисел, которые в двоичном представлении содержат два нуля.

Представляю вашему вниманию очередную задачу по программированию. Условие, надеюсь, вы прочитали. Ну а теперь попробуйте сначала решить задачу самостоятельно, а потом посмотрите мои решения.

Итак, сначала нам нужен массив натуральных чисел. В этот раз я не буду заморачиваться
со случайными значениями, а просто заполню массив некоторым количеством чисел от 0 до 15.

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

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

//*******************************************************************
// Ищет указанный символ в строке
// ВХОД:  s - строка, ch - символ
// ВЫХОД: количество найденных символов
//*******************************************************************
function FindSimbolInStr(s : string; ch : Char) : WORD;
var i, n  : WORD;
begin
  n := 0;
  for i := 1 to Length(s) do
    if s[i] = ch then Inc(n);
  Result := n;
end;

Эта функция более универсальна, чем требуют условия задачи – она может подсчитать количество любых символов (с учётом регистра).

Думаю, что какие-то дополнительные пояснения давать нет смысла, потому как всё достаточно просто и описано в комментариях.
Осталось привести примеры программ на
Паскале и
С++.

Решение задачи 2.145 на Паскале

program mytask;

//*******************************************************************
// КОНСТАНТЫ
//*******************************************************************
const
  MAX_NUM = 16;  //Наибольшее количество числе в массиве

//*******************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//*******************************************************************
var
  i  : WORD;
  X  : WORD;
  A  : array[1..MAX_NUM] of WORD;
  st : string;

//*******************************************************************
// ФУНКЦИИ И ПРОЦЕДУРЫ
//*******************************************************************

//*******************************************************************
// Ищет указанный символ в строке
// ВХОД:  s - строка, ch - символ
// ВЫХОД: количество найденных символов
//*******************************************************************
function FindSimbolInStr(s : string; ch : Char) : WORD;
var i, n  : WORD;
begin
  n := 0;
  for i := 1 to Length(s) do
    if s[i] = ch then Inc(n);
  Result := n;
end;

//*******************************************************************
// ОСНОВНАЯ ПРОГРАММА
//*******************************************************************
begin
  X := 0;
  //Заполнить массив числами
  for i := 1 to MAX_NUM do
    begin
      A[i] := i - 1;
      Write(A[i]:3);
    end;

  //Решить задачу
  WriteLn(#10#13#10#13'Numbers where there are exactly two zeros:');
  for i := 1 to MAX_NUM do
    begin
      st := binStr(A[i], 4);
      if FindSimbolInStr(st, '0') = 2 then
        begin
          Write(A[i]:3, ' (', st, ')');
          Inc(X);
        end;
    end;

  WriteLn(#10#13#10#13'Number of numbers with two zeros: ', X);

  //Вывести числа, где не два нуля
  WriteLn(#10#13'Numbers where there are NOT two zeros:');
  for i := 1 to MAX_NUM do
    begin
      st := binStr(A[i], 4);
      if FindSimbolInStr(st, '0') <> 2 then
        Write(A[i]:3, ' (', st, ')');
    end;

  WriteLn(#10#13#10#13'The end. Press ENTER...');
  ReadLn;
end.

Решение задачи 2.145 на C++

#include <cstdlib>
#include <iostream>
#include <bitset>

using namespace std;

//*******************************************************************
// КОНСТАНТЫ
//*******************************************************************

//Наибольшее количество чисел в массиве
const unsigned int MAX_NUM = 16;  

//*******************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//*******************************************************************
unsigned int i;
unsigned int X;
unsigned int A[MAX_NUM];
string st;

//*******************************************************************
// Ищет указанный символ в строке
// ВХОД:  s - строка, ch - символ
// ВЫХОД: количество найденных символов
//*******************************************************************
unsigned int FindSimbolInStr(string s, char ch) 
{
  unsigned int i, n = 0;
	  
  for (i = 0; i < s.length(); i++)
    if (st[i] == ch) n++;
  
	return n;
}

//*******************************************************************
// ОСНОВНАЯ ПРОГРАММА
//*******************************************************************
int main(int argc, char *argv[])
{
  X = 0;
  //Заполнить массив числами
  for (i = 0; i < MAX_NUM; i++)
    {
      A[i] = i;
	 cout.width(3); //Ширина поля вывода 3 знака
      cout << A[i];
    }
    
  //Решить задачу
  cout << endl << endl 
       << "Numbers where there are exactly two zeros:" << endl;
  for (i = 0; i < MAX_NUM; i++)
    {
    	 st = bitset<4>(A[i]).to_string();
      if (FindSimbolInStr(st, '0') == 2)
        {
        	cout.width(3);
		cout << A[i] << "(" << st << ")";
          X++;
	   }
    }
  
  //Вывести числа, где не два нуля
  cout << endl << endl 
       << "Number of numbers with two zeros: " << X << endl;
  for (i = 0; i < MAX_NUM; i++)
    {
    	st = bitset<4>(A[i]).to_string();
      if (FindSimbolInStr(st, '0') != 2)
        {
        	cout.width(3);
		cout << A[i] << "(" << st << ")";
	   }
    }
  
  cout << endl;
  system("PAUSE");
  return EXIT_SUCCESS;
}

Ну а на экране вывод программы будет выглядеть примерно так:

Найти количество нулей в двоичном числе

ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги
“Основы программирования” и
“Основы С++”.

Как стать программистом 2.0

Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки…
Подробнее…

Помощь в технических вопросах

Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение – ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации.
Подробнее…

Значащие нули – это нули, которые являются значимыми цифрами в числе и не могут быть опущены без потери точности измерения или значения. Например, в числе 10.03, два нуля являются значащими, так как они указывают на точность измерения после запятой. Если бы эти нули были опущены и число записывалось бы как 10.3, то оно было бы менее точным и не отражало бы точности измерения.

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

В двоичной системе, незначащий ноль – это ноль, который находится слева от наиболее значимого бита числа. Например, число 0101 в двоичной системе имеет два незначащих нуля слева, так как его наиболее значимый бит находится на третьей позиции справа. Однако, если мы добавим нули слева до наиболее значимого бита, это не изменит значение числа. Например, 00101 и 0101 в двоичной системе представляют одно и то же число 5.

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

Добавить комментарий