Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизБитовая логика Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.066 c