Подсчет количества единиц сдвигом и позицию первой из них - Free Pascal
Формулировка задачи:
Есть двоичная запись числа (где единицы идут только подряд).
Хочу выяснить позицию первой единицы и их количество, идущих подряд.
В этом коде выдает намного большее значение.
И как выделить отсюда позицию первой единицы.
Пример 11110000
Позиция первой 4 (начиная с нуля), общее количество также 4
//ch2chislo - двоичная запись числа while ch2chislo<>0 do begin if (ch2chislo and 1)=1 then count:=count+1; ch2chislo:=ch2chislo shr 1; end;
Решение задачи: «Подсчет количества единиц сдвигом и позицию первой из них»
textual
Листинг программы
uses crt; var chislo:integer; s,r:string; i,k,pos:integer; begin clrscr; writeln('Введите число в десятичной системе исчесления'); readln(chislo); while chislo <> 0 do begin str(chislo mod 2, r); s := r + s; chislo := chislo div 2; end; writeln('Число в двоичной системе исчесления: ',s); k:=0; pos:=-1; for i:=1 to length(s)do begin if s[i]='1' then k:=k+1; if pos=-1 then pos:=i; end; writeln('count= ',k); if pos>-1 then writeln('pos= ',pos); end.
Объяснение кода листинга программы
- Ввод числа в десятичной системе счисления.
- Перевод числа в двоичную систему счисления.
- Подсчет количества единиц в числе.
- Поиск позиции первой единицы в числе.
- Вывод результата подсчета количества единиц.
- Вывод позиции первой единицы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д