Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Битовая логика   Найти похожие ветки 

 
Thesis   (2010-03-15 15:02) [0]

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


 
Германн ©   (2010-03-15 15:07) [1]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=838


 
Ega23 ©   (2010-03-15 15:09) [2]

переменная типа Word := переменная типа Word or 1;


 
Омлет ©   (2010-03-15 15:45) [3]

Первый бит, считая с нуля?


 
Демо ©   (2010-03-16 00:09) [4]


> переменная типа Word := переменная типа Word or 1;


my be Word or 2; ?;)


 
Германн ©   (2010-03-16 00:25) [5]


> my be Word or 2;

May be, may be who knows.
May be Word or $80;


 
Игорь Шевченко ©   (2010-03-16 01:06) [6]


> my be Word or 2; ?;)


my bee ;)


 
Германн ©   (2010-03-16 01:10) [7]

Нет такого термина "первый бит", если речь идет о "битовой логике".
Есть термин "младший бит" (в мировой традиции Least Significant Bit - LSB). Есть также термин "старший бит" (Most Significant Bit - MSB).
Если речь идет о передаче информации, тогда есть "первый бит". Но тогда всегда положено в документации уточнять который бит идёт первым.


 
Германн ©   (2010-03-16 01:12) [8]


> Игорь Шевченко ©   (16.03.10 01:06) [6]
>
>

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


 
antonn ©   (2010-03-16 01:46) [9]

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


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


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

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


 
Anatoly Podgoretsky ©   (2010-03-16 08:43) [11]


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

Мои пчелы.


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

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

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


> May be Word or $80;


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

Word or MSB;


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

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

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


 
Anatoly Podgoretsky ©   (2010-03-16 11:46) [15]

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

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


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

читал, но там описана работа 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));


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


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


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


 
Anatoly Podgoretsky ©   (2010-03-16 12:03) [18]

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

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


 
oldman ©   (2010-03-16 12:05) [19]


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


курсовик?


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


> курсовик?


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


 
oldman ©   (2010-03-16 12:08) [21]


> Thesis   (16.03.10 12:07) [20]


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

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


 
Anatoly Podgoretsky ©   (2010-03-16 12:10) [22]

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

Голова!


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

> 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;


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

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


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


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


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


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

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


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


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

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


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


> Thesis   (16.03.10 12:53) [24]


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



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.077 c
2-1274643123
RWolf
2010-05-23 23:32
2010.08.27
Выполнить код при завершении программы


2-1266055243
V
2010-02-13 13:00
2010.08.27
Объявление массива


2-1267541345
Pavel
2010-03-02 17:49
2010.08.27
Чтение данных из буфера


2-1269262492
Guz
2010-03-22 15:54
2010.08.27
Delphi 7, реестр.


15-1270742112
denis_stell
2010-04-08 19:55
2010.08.27
количество дней