Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2011, 20:09   #1
serega28
 
Регистрация: 24.01.2011
Сообщений: 6
По умолчанию побитовые операции

пытаюсь написать программу но никак не получается. кто сможет помощь???? Написать программу в паскаль "Определить количество значащих двоичных разрядов числа"
serega28 вне форума Ответить с цитированием
Старый 24.01.2011, 21:14   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Сообщение от serega28 Посмотреть сообщение
пытаюсь написать программу но никак не получается. кто сможет помощь???? Написать программу в паскаль "Определить количество значащих двоичных разрядов числа"
Не ври.
Пытался бы - показал бы что сделал и что не получилось.
mss вне форума Ответить с цитированием
Старый 24.01.2011, 21:40   #3
serega28
 
Регистрация: 24.01.2011
Сообщений: 6
По умолчанию

честно пытался, но программы нет...
serega28 вне форума Ответить с цитированием
Старый 24.01.2011, 22:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

согласен с мнением mss, раз нечего показать в качестве результатов Ваших попыток, значит либо совсем не пытались, либо плохо пытались.

В качестве хинта-подсказки скажу,
чтобы узнать чему равен бит числа, нужно к этом числу применить битовую маску через AND Маска
например, чтобы узнать самый младший байт числа равен один или нет, пойдёт такой код:
if (Переменная and 1) = 1 then МладшийБитЧисла_Единица
else МладшийБитЧисла_Ноль

для того, чтобы очередной бит оказался на месте младшего, можно все бита числа сдвинуть на один бит вправо (младший бит самый правый):
Переменная := Переменная shr 1

ну и последнее, продолжать это всё делать в цикле (считая единички в младшем бите), пока Переменная не станет равной нулю.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.01.2011, 22:19   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Сообщение от serega28 Посмотреть сообщение
честно пытался, но программы нет...
Не ври.
Пытался бы - показал бы хоть что-нибудь что ТОБОЙ сделано.
mss вне форума Ответить с цитированием
Старый 24.01.2011, 22:44   #6
serega28
 
Регистрация: 24.01.2011
Сообщений: 6
По умолчанию

вот что я написал, но это не правильно. помогите составить правильную программу, сам я в паскале не очень разбираюсь...

Код:
var a,r1,r2,rn_1,rn, mask: word;
       kol, i:integer;

begin
write('a='); readln(a);

rn:=a and 1;
rn_1:=(a shr 1) and 1;
writeln ('rn_1=',rn_1,' rn=',rn);
if rn=rn_1 then writeln ('posl razr sovp');

mask:=$8000;
while a and mask =0  do
  begin
  mask:=mask shr 1;
  end;
r1:=1;
mask:=mask shr 1;
if a and mask=0 then r2:=0 else r2:=1;
writeln ('r1=',r1,' r2=',r2);
if r1=r2 then writeln ('perv razr sovp');
mask:=$8000;
        kol:=0;
   if r1,rn=1 then kol:=kol+r1+rn else kol:=0;
   writeln ('kol=',kol);
  readln;

end.

___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.01.2011 в 08:40.
serega28 вне форума Ответить с цитированием
Старый 24.01.2011, 23:33   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ну а где собственно цикл ?
mss вне форума Ответить с цитированием
Старый 25.01.2011, 09:27   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну что ж так всё слабо то..

Цитата:
"Определить количество значащих двоичных разрядов числа"
перевожу на "русский" - нужно посчитать, сколько в числе, в двоичном представлении числа, ЕДИНИЧЕК !

решение:
Код:
  write('a='); readln(a);
  Kol := 0;
  while a<>0 do begin
     if (a and 1) = 1 then Inc(kol);
     a := a shr 1;
  end;
  WriteLn('Количество значащих разрядов: ',kol);
  Readln;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2011, 12:07   #9
serega28
 
Регистрация: 24.01.2011
Сообщений: 6
По умолчанию

и это вся программа???
serega28 вне форума Ответить с цитированием
Старый 25.01.2011, 12:10   #10
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Сообщение от serega28 Посмотреть сообщение
и это вся программа???
А тебе еще и в упаковочке, перевязанную ленточкой подавай ?)
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побитовые операции Unique Паскаль, Turbo Pascal, PascalABC.NET 3 29.08.2010 18:50
Побитовые операции С++ Defa4ka Помощь студентам 4 22.06.2010 14:55
побитовые операции Александе еть я Общие вопросы C/C++ 2 18.04.2010 13:31
побитовые операции Dimarik Общие вопросы C/C++ 7 16.04.2010 19:27
Побитовые операции WinterLord Общие вопросы C/C++ 1 12.10.2008 22:39