Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.063 c
2-1270715878
Дмитрий Жуков
2010-04-08 12:37
2010.08.27
"Строки"


2-1265836336
Dmitrijan
2010-02-11 00:12
2010.08.27
Загрузка exe файла в Memo


2-1274285164
lewka
2010-05-19 20:06
2010.08.27
Компас 3D и Delphi. Работа с эскизами


2-1268305355
fford
2010-03-11 14:02
2010.08.27
копировать текст из RichEdit в поток


2-1270546653
spectre d
2010-04-06 13:37
2010.08.27
Calc





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский