Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Битовая логика


Страницы:   1 2

Thesis ©   (2010-03-15 15:02:00) 

есть переменная типа Word. как для установить первый бит этой переменной в 1?


Юрий Зотов   (2010-03-16 14:37:00) [1]


> Thesis   (16.03.10 12:53) [24]


Этого не может быть, проверяйте внимательнее.


Германн   (2010-03-16 14:35:00) [2]


> можно что-нибудь сделать чтобы такие числа проходили.

Учиться, учиться и еще раз учиться! Учить битовую логику.


Thesis   (2010-03-16 13:10:00) [3]

можно что-нибудь сделать чтобы такие числа проходили.


Игорь Шевченко   (2010-03-16 13:06:00) [4]


> для числа D := 368309 получается неверный результат. почему?


Число неудачное


Thesis   (2010-03-16 12:53:00) [5]

для числа D := 368309получается неверный результат. почему?


Юрий Зотов   (2010-03-16 12:15:00) [6]

> Thesis   (16.03.10 11:57) [16]

project Project1;
{$APPTYPE CONSOLE}

uses
 Windows;

var
 D: DWord; // Беззнаковое 4-байтное целое
 W: packed array[1..2] of Word absolute D; // D и W имеют общий адрес
begin
 D := что-нибудь; // Теперь W[1] и W[2] содержат 2-байтовые значения
 WriteLn('Исходное значение: ', D);  
 W[1] := W[1] or $8000; // Установили старший бит, результат - в D
 WriteLn('Установленный старший бит: ', D);
 W[1] := W[1] and $7FFF; // Сбросили старший бит, результат - в D
 WriteLn('Сброшенный старший бит: ', D);
 ReadLn
end;


Anatoly Podgoretsky   (2010-03-16 12:10:00) [7]

> oldman  (16.03.2010 12:05:19)  [19]

Голова!


oldman   (2010-03-16 12:08:00) [8]


> Thesis   (16.03.10 12:07) [20]


Просто возникает вопрос - зачем для установки бита разбирать и собирать переменную.

Похоже на институтские задачки.


Thesis   (2010-03-16 12:07:00) [9]


> курсовик?


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


oldman   (2010-03-16 12:05:00) [10]


> задача у меня токова: есть 4-х байтовое значение. нужно
> разбить его на 2 двухбайтовых, для 1-го полученного 2-х
> байтового значения установить / сбросить старший бит (1).
>  собрать из двухбайтовых значение первоначальное однобайтовое.
>


курсовик?


Anatoly Podgoretsky   (2010-03-16 12:03:00) [11]

> Thesis  (16.03.2010 11:57:16)  [16]

Так нет отдельных статей, по работе с дух байтами и с одним байтом и также с другим количеством байт.
Как нет курсов вождения на третей скорости.


Thesis   (2010-03-16 11:58:00) [12]


> собрать из двухбайтовых значение первоначальное однобайтовое


сорри, собрать из двухбайтовых значение первоначальное четырехбайтовое


Thesis   (2010-03-16 11:57:00) [13]

читал, но там описана работа 4-х байтовой переменной. тема для меня совершенно новая поэтому торможу.

задача у меня токова: есть 4-х байтовое значение. нужно разбить его на 2 двухбайтовых, для 1-го полученного 2-х байтового значения установить / сбросить старший бит (1). собрать из двухбайтовых значение первоначальное однобайтовое.

Попытался разобраться самостоятельно, вот что получилось (работает неправильно):

N := 70286;
 W1 := N and $FFFF;
 W2 := (N and $FFFF0000) shr 16;

 W1 := W1 or $80;
 try
   if W1 and $80 <> 0 then
     ShowMessage('1')
   else
     ShowMessage('0');
 finally
   W1 := W1 and ($FF xor $80);
 end;
 Res := W1 or (W2 shl 16);
 ShowMessage(IntToStr(Res));


Anatoly Podgoretsky   (2010-03-16 11:46:00) [14]

> Thesis  (16.03.2010 11:32:14)  [14]

Ты статью читал?


Thesis   (2010-03-16 11:32:00) [15]

с этим ясно, спасибо.

а как правильно сбрасывать. Пытаюсь делать так:
W1 := W1 and ($FF xor $80);


Anatoly Podgoretsky   (2010-03-16 11:30:00) [16]

Word or MSB;


Thesis   (2010-03-16 11:25:00) [17]

в моем случае речь идет о старшем бите

а почему $80 а не $8000?


> May be Word or $80;


Anatoly Podgoretsky   (2010-03-16 08:43:00) [18]


> Одну букву ты забыл. :)

Мои пчелы.


Германн   (2010-03-16 01:57:00) [19]


> antonn ©   (16.03.10 01:46) [9]

"Какая гадость...
Какая гадость эта ваша заливная рыба"
(с)


antonn   (2010-03-16 01:46:00) [20]

"мое пиво"? =)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо