Работа с переменными в двоичной системе счисления

  • Автор темы tsrodger
  • Дата начала

tsrodger

Guest
Работа с переменными в двоичной системе счисления

Собственно как правильно работать с переменными в двоичной системе счисления.
Пытался найти ответ в форуме, но тут народ расмматривает работу с бинарными данными (ведь к этой области относится?) совершенно в другом аспекте и привести материал под свои задачи я не смог :( .
Перевод числа из одной системы в другую нашел, но полученная в результате преобразования переменная почему-то обрабатывается в десятичной системе, и соответственно арифметические операции с другой переменной (полученной аналогичным способом) ни к чему хоршему не приводит...

Заранее спасибо...
 

Crazy

Developer
tsrodger, ответь для начала на вопрос: в какой системе счисления обрабатывается переменная $foo?

PHP:
$foo = 1;
$foo = $foo + $foo;
 

tsrodger

Guest
Originally posted by Crazy
tsrodger, ответь для начала на вопрос: в какой системе счисления обрабатывается переменная $foo?

PHP:
$foo = 1;
$foo = $foo + $foo;
В твоем примере? да в какой угодной, десятичная, шестнатеричная, но только не двоичная...

касательно работы примера в php то работа идет в десятичной, более того если задать значение в шестнатеричной он сам почему-то переводит его в десятичную и ответ выдет в ней же
 

Crazy

Developer
Я вижу, смысла ты не понял. Ok, как ты узнал, что не двоичная?
 

tsrodger

Guest
Originally posted by Crazy
Я вижу, смысла ты не понял. Ok, как ты узнал, что не двоичная?
в этом случае логично ожидать в результате операции сложения 10

Если переменная задается в одной системе, то было бы логично получать результат в той же системе. Но у меня почему-то все в десятичную вываливается. :(

Похоже ты не понимаешь что мне нужно объясню на примере
var1 + var2 = result
10 10 20 dec
a a 14 hex
1010 1010 10100 bin
вот такие значение хочется получить в переменных соответственно до и после операций над ними
 

Crazy

Developer
Автор оригинала: tsrodger
в этом случае логично ожидать в результате операции сложения 10
А как ты узнал, что он не "10"? ТЩАТЕЛЬНО обдумай ответ.

Если переменная задается в одной системе, то было бы логично получать результат в той же системе. Но у меня почему-то все в десятичную вываливается. :(
И где, интересно узнать, ты нашел в PHP способ "задания переменных" в той или иной системе? Шоб ты знал: в PHP этого нет, не было, и никогда не будет. Посему вопрос: ЧТО ты делал на самом деле?

-~{}~ 04.07.04 20:36:

Автор оригинала: tsrodger
Похоже ты не понимаешь что мне нужно объясню на примере
var1 + var2 = result
10 10 20 dec
a a 14 hex
1010 1010 10100 bin
Дружок, я все понимаю. Я хочу, чтобы ты понял. :)
 

tsrodger

Guest
А как ты узнал, что он не "10"? ТЩАТЕЛЬНО обдумай ответ
чесно говоря смотрел в дебагере и через эху :confused:

И где, интересно узнать, ты нашел в PHP способ "задания переменных" в той или иной системе? Шоб ты знал: в PHP этого нет, не было, и никогда не будет. Посему вопрос: ЧТО ты делал на самом деле?
Я не говорил что это есть, я хотел сказать что если такая возможность есть (см заголовок темы) ты было бы хорошо если они сохранялись. Возможно не совсем корректно но для ввода в нексах вроде как можно использовать 0x[значение] - - проглавтывается, правда в десятичную переводится...

Дружок, я все понимаю. Я хочу, чтобы ты понял. :)
Блин а я бы как хотел понять в чем косяк. но если я должен понять что в цифровых девайсах вся работа идет в двоичной системе, то это не совсем то ...
 

Crazy

Developer
Автор оригинала: tsrodger
чесно говоря смотрел в дебагере и через эху :confused:
Про дебаггер ты спросишь у его авторов. А про echo все просто. Семантика echo такова: если среди параметров есть число, то нужно сформировать его десятичное представление. :)


правда в десятичную переводится...
...при ВЫВОДЕ.


Блин а я бы как хотел понять в чем косяк. но если я должен понять что в цифровых девайсах вся работа идет в двоичной системе, то это не совсем то ...
Ты должен для начала осознать, что ты вообще хочешь получить. А как раз с этим самые большие проблемы. :)
 

tsrodger

Guest
Спасибки оромное :)
чуть легче, но не полностью...
если можно указать что я ввожу в шестнатеричной, то можно ли указать что я ввожу число в двоичной?
 

Crazy

Developer
Ты можешь указать, что твой исходный код содержит литеральную константу, записанную в той или иной системе счисления.

Однако, это не оказывает никакого воздействия на переменную, которой ты присваиваешь ЗНАЧЕНИЕ константы. Ибо ЗНАЧЕНИЕ php записывает в той системе, которая удобна лично ему (в двоичной, кстати).

Если ты потом хочешь ВЫВЕСТИ ТЕКСТОВОЕ ПРЕДСТАВЛЕНИЕ переменной, используя нужную тебе систему счисления, то это можно сделать. Легко.
 

Demiurg

Guest
для echo указать нельзя, для printf можно.
Но тебе, наверно, нужно просто приоброзовать вид, для этого есть [m]decbin[/m]
 

tsrodger

Guest
ЗНАЧЕНИЕ php записывает в той системе, которая удобна лично ему (в двоичной, кстати).
уфф... хорошо, пусть так..
но в чем тогда косяк
$var_1 = 0xA;
$var_2 = 12;
$var_2_hex = dechex($var_2);
$delta = $var_1 - $var_2; //правильно :)
$delta_2 = $var_1 - $var_2_hex; // неправильно :(
 

Crazy

Developer
Автор оригинала: tsrodger
$delta_2 = $var_1 - $var_2_hex; // неправильно :(
Перевожу на русски язык то, что ты попросил: дорогой PHP! Возьми переменные $var_1 и $var_2_hex и сложи их, используя числовое сложение. А ежели одна из них окажется строкой, то я обещаю тебе, что это десятичное представление числа и, пожалуйста, перед сложением преврати ее в число.

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

Код:
$var_2_hex = dechex($var_2);
Здесь $var_2 -- число. А $var_2_hex -- просто строка. Никакого отношения к число и шестнадцатеричной системе счисления эта строка уже не имеет.
 

Demiurg

Guest
На ссылку, ты естественно не нажимал.
И все распинания крейзи не отложили ни малейшего отпечатка у тебя в голове. Ты до сих пор считаешь, что есть перменные двоичные, есть десятичные и прочие есть. Так вот нету. Есть переменная типа int, есть перменная типа string , есть еще array. Так вот переменной типа int содержится число, просто число. А как выводить это число - это уже твоё дело. По умолчанию все выводится в десятичной системе.
 

tsrodger

Guest
Originally posted by Crazy
Причина проблем: ты не врубаешься в разницу между терминами "число" и "текстовое представление числа, записанное в некоторой системе смчисления".
все теперь понял :))
Огромное спасибо!!!
 
Сверху