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

Вниз

двоичная запись   Найти похожие ветки 

 
гость   (2008-01-08 02:41) [0]

как сообщить компилятору что запись является двоичным представлением числа
a:byte;
a:=10011110


 
DrPass ©   (2008-01-08 02:48) [1]

Никак. К чему этот изврат, если есть шестнадцатеричная запись?


 
Германн ©   (2008-01-08 02:55) [2]

Гости мне уже надоели.
Примите и проч.


 
гость   (2008-01-08 02:57) [3]

переменная a это набор флагов
1 бит отвечает за одно
2 бит за другое
...
запись 1100110 or 00000001 гораздо наглядние
нежели $66 or $1


 
Германн ©   (2008-01-08 03:13) [4]


> гость   (08.01.08 02:57) [3]
>
> переменная a это набор флагов
> 1 бит отвечает за одно
> 2 бит за другое
> ...
> запись 1100110 or 00000001 гораздо наглядние
> нежели $66 or $1
>

А при чём тут запись?


 
{RASkov} ©   (2008-01-08 03:26) [5]

> [3] гость   (08.01.08 02:57)

Никак. Уже сказали об этом.... Либо десятичным представлением, либо шеснадцатиричным, либо строковым.... в строковом, как понимаешь, можно представить все, и твой двоичный вариант, но, как должен понимать, у строк и свой минус есть :)

> запись 1100110 or 00000001 гораздо наглядние
> нежели $66 or $1

Кому любоваться-то ?


 
гость   (2008-01-08 03:28) [6]

слово ( запись) в дальнейшем читать как  (строка кода)


 
гость   (2008-01-08 03:44) [7]

придется прописать константы с осмысленными именами присвоить им десятичные значения и ими пользоватся

спасибо всем. тема закрыта.


 
Германн ©   (2008-01-08 03:55) [8]


> гость   (08.01.08 03:44) [7]
>
> придется прописать константы с осмысленными именами присвоить
> им десятичные значения и ими пользоватся

Ну наконец-то разумное высказывание.
Хотя ...
А шестнадцатиричные ничем не хуже.

А запись всё же лучше, если значения констант не превышают 255.


 
Loginov Dmitry ©   (2008-01-08 10:19) [9]

> как сообщить компилятору что запись является двоичным представлением
> числа
> a:byte;
> a:=10011110


Так пойдет?

 a: byte;

 a := $9E; //10011110


 
Anatoly Podgoretsky ©   (2008-01-08 10:50) [10]

> гость  (08.01.2008 02:41:00)  [0]


const
  b_10011110 = $9E;
...
a := b_10011110;


 
palva ©   (2008-01-08 12:09) [11]


> гость   (08.01.08 03:44) [7]
> придется прописать константы с осмысленными именами присвоить
> им десятичные значения и ими пользоватся

Ужас! Вы раньше наверно только на си писали? Почитайте Вирта, самую первую книжку про паскаль. На паскале это делают так:
{$APPTYPE CONSOLE}
uses SysUtils;
type
 TMyFlag = (Flag1, Flag2, Flag3, Flag4, Flag5, Flag6, Flag7, Flag8);
 TMyFlagSet = set of TMyFlag;
var
 fs: TMyFlagSet;
begin
 fs := [Flag5, Flag1, Flag8, Flag1]; // Флаги даже могут повторяться
 WriteLn(IntToHex(PInteger(@fs)^, 2)); // 91
end.


 
palva ©   (2008-01-08 12:49) [12]

Кстати, мастера, никто не знает, как можно инвертировать элемент множества?
Давно интересовал этот вопрос.

{$APPTYPE CONSOLE}
uses SysUtils;
type
 TMyFlag = (Flag1, Flag2, Flag3, Flag4, Flag5, Flag6, Flag7, Flag8);
 TMyFlagSet = set of TMyFlag;
var
 fs: TMyFlagSet;
begin
 fs := [Flag5, Flag1, Flag8, Flag1];
 fs := fs + [Flag3] - [Flag8]; // Поднятие/опускание флага
 // только вот инвертирование флага непонятно как делать
 // Вот такой длинный код
 if Flag5 in fs then
   fs := fs - [Flag5]
 else
   fs := fs + [Flag5];
 // хотелось бы заменить на нечто такое:
 // fs := fs OR [Flag5];
 // но, конечно, компилятор не дает
 WriteLn(IntToHex(PInteger(@fs)^, 2)); // 05
end.


 
palva ©   (2008-01-08 12:51) [13]

Пардон
// fs := fs XOR [Flag5];


 
Anatoly Podgoretsky ©   (2008-01-08 12:57) [14]

> palva  (08.01.2008 12:49:12)  [12]

Operator Operation Operand types Result type Example
+ union set set Set1 + Set2
- difference set set S - T
* intersection set set S * T
<= subset set Boolean Q <= MySet
>= superset set Boolean S1 >= S2
= equality set Boolean S2 = MySet
<> inequality set Boolean MySet <> S1
in membership ordinal, set Boolean A in Set1


 
Германн ©   (2008-01-08 14:58) [15]


> palva ©   (08.01.08 12:49) [12]
>
> Кстати, мастера, никто не знает, как можно инвертировать
> элемент множества?
>

Конкретно в твоем примере элементарно. С помощью absolute и Ord.



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
2-1199627517
antonn (work)
2008-01-06 16:51
2008.02.03
random


2-1200160636
петрович07
2008-01-12 20:57
2008.02.03
imagelist


5-1166076046
DimaBr
2006-12-14 09:00
2008.02.03
Создание компонентов !!!


15-1198324676
Kostafey
2007-12-22 14:57
2008.02.03
К вопросу о культурном проектировании реляционных БД


2-1199427867
Master
2008-01-04 09:24
2008.02.03
Проблемы с рисованием