Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Вниз

Как изменить один бит в байте ?   Найти похожие ветки 

 
San1712   (2007-12-13 20:57) [0]

Здравствуйте. Как изменить бит в байте ? Буду рад увидеть примеры как на асме так и на делфи.


 
Правильный_Вася   (2007-12-13 21:13) [1]

A and B


 
Servelat   (2007-12-13 21:13) [2]

var
 B: Byte;
...
B := B xor 1;

изменили значение младшего бита на противоположное. Подробнее http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html

Также, можно посмотреть стандартный класс TBits и его реализацию.


 
Anatoly Podgoretsky ©   (2007-12-13 22:30) [3]

Servelat   (13.12.07 21:13) [2]
Молодец, знаком с булевой алгеброй.


 
Servelat   (2007-12-13 22:57) [4]

> [3]

Мне в ваших словах почудилась ирония (=.

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


 
Anatoly Podgoretsky ©   (2007-12-13 23:03) [5]

> Servelat  (13.12.2007 22:57:04)  [4]

Никакой иронии, единственно правильный ответ, который действительно изменит один бит. В отличии от OR/AND


 
Pavia ©   (2007-12-13 23:43) [6]


> Никакой иронии, единственно правильный ответ, который действительно
> изменит один бит. В отличии от OR/AND

Да вы че? Все три инструкции OR/AND/XOR работают с байтами. И могут изменять один бит.


 
Servelat   (2007-12-13 23:51) [7]

> Да вы че? Все три инструкции OR/AND/XOR работают с байтами.
> И могут изменять один бит.


AND и OR могут изменить бит, а могут и не изменить, в зависимости от текущего состояния этого бита. А XOR X гарантированно изменит все биты, которые установлены в X. Так как автор хотел изменить бит, то ему видимо нужен XOR, в противном случае, ему следовало бы спросить как установить или сбросить бит.


 
Anatoly Podgoretsky ©   (2007-12-14 00:00) [8]

> Pavia  (13.12.2007 23:43:06)  [6]

Могут изменить, а могут и нет, XOR обязательно изменит.


 
palva ©   (2007-12-14 00:17) [9]

Автор просил еще и на ассемблере:

{$APPTYPE CONSOLE}
var
 i: Integer;

procedure revbit(var i: Integer; n: Integer);
asm
 MOV EBX,i
 BTC [EBX], n
end;

begin
 i := $10000003;
 revbit(i, 28);
 WriteLn(i); // 3
end.


 
Anatoly Podgoretsky ©   (2007-12-14 00:20) [10]

> palva  (14.12.2007 00:17:09)  [9]

Ты бы поосторожнее с EBX


 
Slym ©   (2007-12-14 04:15) [11]

Anatoly Podgoretsky ©   (14.12.07 0:20) [10]
Ты бы поосторожнее с EBX

эт точно
function revbit(const i: Integer; n: Integer):integer;
asm
BTC EAX, n
end;

var i: Integer;
begin
i := $10000003;
i:=revbit(i, 28);
WriteLn(i); // 3
end.


 
Slym ©   (2007-12-14 04:16) [12]

function revbit(const i, n: Integer):integer;
asm
 BTC EAX, EDX
end;


 
DmT   (2007-12-14 15:18) [13]

Автор, тебе надо тупо инвертить битик или управлять состояние вручную(установить/сбросить)?


 
korneley ©   (2007-12-14 16:27) [14]

$2B or not $2B = $FF
(c)



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

Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
15-1197263369
Riply
2007-12-10 08:09
2008.01.13
TrueChecker


9-1165158185
Зм1й
2006-12-03 18:03
2008.01.13
Проективные тени


15-1197121001
тестмессаге
2007-12-08 16:36
2008.01.13
Что не хватает файлу от ФоксПро?


15-1197196071
Kostafey
2007-12-09 13:27
2008.01.13
С днем рождения ! 9 декабря


15-1196853263
alshtam
2007-12-05 14:14
2008.01.13
как висту снести???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский