Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> записать в 1-й бит 1-го байта значение 1? 
:(
    Опции темы
JS2
Дата 9.2.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 25.3.2009

Репутация: нет
Всего: нет



имеется переменная типа запись
Код

  TBlock1 = record
    Offset, Length: Integer;
  end;

  Block1: TBlock1;


  Как записать в 1-й бит 1-го байта значение 1?
  

Это сообщение отредактировал(а) bems - 9.2.2010, 21:24
PM MAIL   Вверх
Frees
Дата 9.2.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



как то так
Код

var x: Byte;
.... 
 Move(b, x, 1);
  x := x or 128;
  Move(x, b, 1);





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
JS2
Дата 9.2.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 25.3.2009

Репутация: нет
Всего: нет



а почему 128
PM MAIL   Вверх
Frees
Дата 9.2.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(JS2 @  9.2.2010,  18:33 Найти цитируемый пост)
128

это 10000000 в bin тебе надо первый бит сделать единицей остальные будут неизменны


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
kami
Дата 9.2.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(JS2 @  9.2.2010,  15:33 Найти цитируемый пост)
а почему 128

Да, почему?
Ведь первый бит первого байта =2 (если считать правильно, с нуля).
Цитата(JS2 @  9.2.2010,  15:13 Найти цитируемый пост)
Как записать в 1-й бит 1-го байта значение 1?

В первый байт Offset, Length или чего?
PM MAIL WWW   Вверх
Frees
Дата 9.2.2010, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(kami @  9.2.2010,  18:48 Найти цитируемый пост)
Ведь первый бит первого байта =2 (если считать правильно, с нуля).

ага точно 
тогда 64


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
kami
Дата 9.2.2010, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(Frees @  9.2.2010,  15:51 Найти цитируемый пост)
тогда 64

Почему 64?
128 - это седьмой бит, установленный в единицу.
64 - шестой
32 - пятый
16 - четвертый
8 - третий
4 - второй
2 - первый
1 - нулевой.

И устанавливается (myValue:integer) 
myValue:=myValue or 2, не нужно никаких Move... smile или я чего-то не понимаю?
PM MAIL WWW   Вверх
Frees
Дата 9.2.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



kami, почему то мне кажется что ты не с того края посчитал

байт
10000000 - 128 нулевой
01000000 - 64 первый

где я не прав?

Добавлено через 4 минуты и 24 секунды
Цитата(kami @  9.2.2010,  18:58 Найти цитируемый пост)
myValue:=myValue or 2, не нужно никаких Move... smile или я чего-то не понимаю?


дак у него рекорд а не интеджер, можно конечно Block1.Offset := Block1.Offset or ..хз. но это может сломаться елсли изменить структуру


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
kami
Дата 9.2.2010, 16:17 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(Frees @  9.2.2010,  16:01 Найти цитируемый пост)
где я не прав?

биты в байте нумеруются справа налево. Это же касается и байтов в словах.
ссылка
PM MAIL WWW   Вверх
Mikel
Дата 9.2.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



Наверное что-то типа этого, проверьте, писал без компилятора. n- номер бита.

Код

procedure SetBit(var b:TBlock1;n:integer);
var tmp:PByte;
begin
tmp:=PByte(LongWord(@b)+n div 8)^;
tmp^:=tmp^ or (1 shl (n mod 8));
end;



--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
profesiachuvak
Дата 9.2.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: 1
Всего: 4



Цитата(Frees @  9.2.2010,  16:01 Найти цитируемый пост)
kami, почему то мне кажется что ты не с того края посчитал

байт
10000000 - 128 нулевой
01000000 - 64 первый

где я не прав?


Я тоже поддакнуть хочу: 

kami, прав. 
Вот эта запись 10000000 говорит о том что у нас 7-ой бит. 2^7 = 128.
Нужно вот так: 00000001 вот это уже 2^0=1 нулевой
Ну а первый соответсвенно 2^1 (0000010). 


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.