![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сравнение чисел
accessviolation © (2013-03-14 17:33:00)почему выдает непраильно сравнивает:
const
C1 = $01;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
C1_: Int;
begin
C1_ := 5;
if (C1_ and C1) = C1 then
ShowMessage('equal with C1')
else
ShowMessage('not equal with C1');
end;
почему выдает, что равные, значение же 5?
Германн (2013-03-15 02:40:00) [1]Удалено модератором
Примечание: overquoting
Jeer (2013-03-14 23:30:00) [2]> В учебнике класс за 2й должно быть написано.
Да нет уже тех учебников и учителей - теперь ЕГЭ :)
Плохиш (2013-03-14 19:45:00) [3]
> accessviolation (14.03.13 17:45) [4]
> а как тогда правильно сравнивать int-значение со значением
> в двоичном виде?
В учебнике класс за 2й должно быть написано.
Ega23 (2013-03-14 19:22:00) [4]
> а как тогда правильно сравнивать int-значение со значением
> в двоичном виде?
Во-первых, C1 = $01; - это не двоичный, а hex-вид.
Во-вторых, это строковое представление числа.
У тебя есть три ракушки. Ты можешь сказать: "У меня есть три ракушки", "У меня есть 3 ракушки", "У меня есть 11 ракушек (в двоичной системе)", "У меня есть 10 ракушек (в троичной системе)", "У меня есть three ракушки (на аглицком)", или "У меня есть драй ракушек на немецком".
Количество ракушек у тебя при этом не изменится, изменится только то, как ты это количество назвал собеседнику.
Вот ровно то же самое и с байтами. "Внутре" - это набор единичек и нулей. Как ты его будешь интерпретировать - это твоё личное дело, набор от этого никак не изменится.
clickmaker (2013-03-14 17:51:00) [5]> сравнивать int-значение со значением в двоичном виде?
а int значение в каком виде?
accessviolation (2013-03-14 17:45:00) [6]а как тогда правильно сравнивать int-значение со значением в двоичном виде?
var
C1_: Int;
begin
C1_ := 1;
if C1_ = C1 then
ShowMessage('equal with C1')
else
ShowMessage('not equal with C1');
так?
RWolf (2013-03-14 17:38:00) [7]
> [1]
виноват, проглядел знак подчёркивания.
http://ru.wikipedia.org/wiki/Битовые_операции
clickmaker (2013-03-14 17:36:00) [8]> почему выдает, что равные
потому что это не проверка на равенство, а битовая операция. Представь 1 и 5 в двоичном виде и посмотри
RWolf (2013-03-14 17:34:00) [9](x and x) = x для любого целого x.