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

Вниз

сравнение чисел   Найти похожие ветки 

 
accessviolation   (2013-03-14 17:33) [0]

почему выдает непраильно сравнивает:


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?


 
RWolf ©   (2013-03-14 17:34) [1]

(x and x) = x для любого целого x.


 
clickmaker ©   (2013-03-14 17:36) [2]

> почему выдает, что равные

потому что это не проверка на равенство, а битовая операция. Представь 1 и 5 в двоичном виде и посмотри


 
RWolf ©   (2013-03-14 17:38) [3]


> [1]

виноват, проглядел знак подчёркивания.
http://ru.wikipedia.org/wiki/Битовые_операции


 
accessviolation   (2013-03-14 17:45) [4]

а как тогда правильно сравнивать int-значение со значением в двоичном виде?


var
 C1_: Int;
begin
 C1_ := 1;
 if C1_ = C1 then
   ShowMessage("equal with C1")
 else
   ShowMessage("not equal with C1");


так?


 
clickmaker ©   (2013-03-14 17:51) [5]

> сравнивать int-значение со значением в двоичном виде?

а int значение в каком виде?


 
Ega23 ©   (2013-03-14 19:22) [6]


> а как тогда правильно сравнивать int-значение со значением
> в двоичном виде?


Во-первых,  C1 = $01;  - это не двоичный, а hex-вид.
Во-вторых, это строковое представление числа.

У тебя есть три ракушки. Ты можешь сказать: "У меня есть три ракушки", "У меня есть 3 ракушки", "У меня есть 11 ракушек (в двоичной системе)", "У меня есть 10 ракушек (в троичной системе)", "У меня есть three ракушки (на аглицком)", или "У меня есть драй ракушек на немецком".
Количество ракушек у тебя при этом не изменится, изменится только то, как ты это количество назвал собеседнику.
Вот ровно то же самое и с байтами. "Внутре" - это набор единичек и нулей. Как ты его будешь интерпретировать - это твоё личное дело, набор от этого никак не изменится.


 
Плохиш ©   (2013-03-14 19:45) [7]


> accessviolation   (14.03.13 17:45) [4]
> а как тогда правильно сравнивать int-значение со значением
> в двоичном виде?

В учебнике класс за 2й должно быть написано.


 
Jeer ©   (2013-03-14 23:30) [8]

> В учебнике класс за 2й должно быть написано.

Да нет уже тех учебников и учителей - теперь ЕГЭ :)


 
Германн ©   (2013-03-15 02:40) [9]

Удалено модератором
Примечание: overquoting



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

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

Наверх




Память: 0.48 MB
Время: 0.005 c
15-1374177026
Jeer
2013-07-18 23:50
2014.01.05
Помним, чтим.."Нормандия-Неман"


2-1363268014
accessviolation
2013-03-14 17:33
2014.01.05
сравнение чисел


2-1362916640
Павел Калугин
2013-03-10 15:57
2014.01.05
Куда DecimalSeparator в XE3 запихали?


15-1374042598
Юрий
2013-07-17 10:29
2014.01.05
С днем рождения ! 16 июля 2013 вторник


2-1363085015
ttt
2013-03-12 14:43
2014.01.05
Добавить ContextMenu в подменю попупа