Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобрать кусочек программы 
V
    Опции темы
beepbeep
Дата 24.12.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



Код

var
 key:string;
 intkey,i:integer;
 tmp:byte;
begin
 key:= '10101';
 intkey:=0;
 for i:=1 to length(key) do
  intkey:=intkey+(strtoint(key[i])*(Round(power(2,length(key)-i))));
 Reset(input);
 Rewrite(output);
 while not eof(input) do
  begin
   read(input,tmp);
   for i:=7 downto 0 do
    begin
     if (intkey and (1 shl (length(key)-1))<>0) then 
       tmp:=tmp xor (1 shl i);                          
     intkey:=intkey shl 1;
     if (intkey and (1 shl length(key))<>0) then      
       intkey:=intkey or 1;                              
    end;
   write(output,tmp);
  end;
  closeFile(output);
  closeFile(input);
  Memo1.Lines.LoadFromFile(SaveDialog1.FileName);


Больше всего интересует вот эта часть:
Код

  for i:=7 downto 0 do
    begin
     if (intkey and (1 shl (length(key)-1))<>0) then 
       tmp:=tmp xor (1 shl i);                          
     intkey:=intkey shl 1;
     if (intkey and (1 shl length(key))<>0) then      
       intkey:=intkey or 1;                              
    end;


Пожалуйста помогите разобраться :(

Это сообщение отредактировал(а) beepbeep - 24.12.2009, 16:37
PM MAIL   Вверх
~FoX~
Дата 24.12.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



beepbeep, Используйте теги кода
and - битовое умножение (И)
shl - смещение влево на количество указанных бит
xor - исключающие или
or - битовове или

Код

  for i:=7 downto 0 do //Цикл от 7 до 0 
    begin  //поехали
     if (intkey and (1 shl (length(key)-1))<>0) then //если intkey И(*) 01 смещенное на длину key-1 влево, не равно 0 то
       tmp:=tmp xor (1 shl i);                          // tmp = tmp исключающие  (000001 смещенное на i влево)
     intkey:=intkey shl 1;                            //intkey = результату смещения intkey на 1 влево
     if (intkey and (1 shl length(key))<>0) then      //если intkey И(*) 01 смещенное на длину key влево, не равно 0 то
       intkey:=intkey or 1;                              //intkey = intkey + 1(в двоичной системе)
    end;


Это сообщение отредактировал(а) ~FoX~ - 24.12.2009, 16:28


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
beepbeep
Дата 24.12.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



За тэги извиняюсь, а за ответ - большое спасибо
PM MAIL   Вверх
Juice
Дата 24.12.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 13.1.2007

Репутация: нет
Всего: нет



А если не секрет, что из ответа понятно?
PM MAIL   Вверх
beepbeep
Дата 25.12.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



никто и не писал, что из ответа что-то понятно ))) спасибо за сам факт - что хоть что-то и кто-то ответил. Разобрался позже сам.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.