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