На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Подсчет количества единиц , в двоичном представлении переменной
    "Напишите функцию для вычисления количества единиц в двоичном представлении переменной типа Word"
    Меня интересует: 1) что это за переменные такие - word? 2) как представить в двоичном виде? 3) как подсчитать количество единиц?
    Т.е. по сути решить всю задачу не знаю как... Если бы была переменная типа string - я бы подсчитал кол-во единиц, а вот как быть с этой задачей?..
    Сообщение отредактировано: volvo877 -
      Word - 2 байта, диапазон 0 - 65535.
      Если число сразу в двоичном виде, то проще всего будет Val'ом перевести в строку и посчитать единицы.
        А что, такой вариант не подходит уже:
        ExpandedWrap disabled
          while X > 0 do begin
            inc(count, byte((X and $0001) > 0));
            X := X shr 1;
          end;
        ?
        В памяти-то число всегда хранится в двоичном виде...

        Snow-ball, кстати, название темы поменяй, ибо
        Цитата Правила Раздела @
        Название темы должно быть информативным !
          Я вот так накидал на Pascal’е:
          ExpandedWrap disabled
            Procedure DecTo2(Value:integer;var Result:String);
            var
              o,v:integer;
            begin
              v:=value;
              o:=v mod 2;
              if o=0 then
                insert('0',result,0);
              if o=1 then
                insert('1',result,0);
              v:=v div 2;
              if v>=2 then
                DecTo2(V,Result)
              else
                insert('1',result,0);
            end;
          - переводит десятичное число в двоичное в виде строки.
          Сообщение отредактировано: Profi -
            Цитата Profi @
            ... - переводит десятичное число в двоичное в виде строки.

            Нет. Переводит двоичное число из внутреннего представления в строку.
              Цитата nvm @
              Нет. Переводит двоичное число из внутреннего представления в строку.

              Я вообще-то делал как на парах по дискретной математике. Там мы точно переводили десятичные в двоичные.
                Profi, Спасибо!

                Добавлено
                ExpandedWrap disabled
                  while X > 0 do begin
                    inc(count, byte((X and $0001) > 0));
                    X := X shr 1;
                  end;

                что за действие shr?
                  Цитата Snow-ball @
                  что за действие shr?

                  Сдвиг вправо на определенное количество бит...

                  Пример:
                  До сдвига:
                  X = 10011101

                  Делаем сдвиг: X := X shr 2;

                  После сдвига:
                  X = 00100111 (младшие биты 01 вышли за пределы разрядной сетки, 2 старших бита заполнились нулями)
                    Цитата Profi @
                    Цитата nvm @
                    Нет. Переводит двоичное число из внутреннего представления в строку.

                    Я вообще-то делал как на парах по дискретной математике. Там мы точно переводили десятичные в двоичные.

                    Ты производишь вычисления в десятичной системе, а компьютер в двоичной - десятичные числа он может хранить только в виде строк.
                      ExpandedWrap disabled
                        while x<>0 do
                         begin
                         x:=x and(x-1);
                         inc(result);
                         end;
                        Цитата nvm @
                        Ты производишь вычисления в десятичной системе, а компьютер в двоичной - десятичные числа он может хранить только в виде строк.

                        А, Вы в этом смысле, просто не понял сначала.
                        Сообщение отредактировано: Profi -
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0408 ]   [ 15 queries used ]   [ Generated: 2.08.25, 18:59 GMT ]