Проблема с XOR
От: HLGEN  
Дата: 18.11.06 12:06
Оценка:
У меня вопрос — я сделал xor двух байтов. В результате получился int.
Почему так получилось?

Нет, я знаю как это решить с помощью unchecked и &0xFF
.NETloper
Re: Проблема с XOR
От: LiS_at_RSDN  
Дата: 18.11.06 12:21
Оценка:
Здравствуйте, HLGEN, Вы писали:

HLG>У меня вопрос — я сделал xor двух байтов. В результате получился int.

HLG>Почему так получилось?

HLG>Нет, я знаю как это решить с помощью unchecked и &0xFF

а сохранял результат наверно в инт?
Re[2]: Проблема с XOR
От: HLGEN  
Дата: 18.11.06 13:59
Оценка:
Здравствуйте, LiS_at_RSDN, Вы писали:

LS_>Здравствуйте, HLGEN, Вы писали:


HLG>>У меня вопрос — я сделал xor двух байтов. В результате получился int.

HLG>>Почему так получилось?

HLG>>Нет, я знаю как это решить с помощью unchecked и &0xFF

LS_>а сохранял результат наверно в инт?

byte a = GetA();
byte b = GetB();
byte c = a ^ b;


В результате пишет, что отсутсвует превидение int в byte
.NETloper
Re[3]: Проблема с XOR
От: codenet Россия  
Дата: 18.11.06 14:45
Оценка:
Здравствуйте, HLGEN, Вы писали:


HLG>byte a = GetA();

HLG>byte b = GetB();
HLG>byte c = a ^ b;


HLG>В результате пишет, что отсутсвует превидение int в byte



    public class test
    {
         static byte a = 0xF8;
         static byte b = 0x3F;
         static byte c = (byte)(a ^ b);

        public static void Main()
        {
            Console.WriteLine("0x{0:x2}", c);
            Console.ReadKey();
        }
    }

вроде у меня норм работает
Re[4]: Проблема с XOR
От: LiS_at_RSDN  
Дата: 18.11.06 15:00
Оценка: +1
Здравствуйте, codenet, Вы писали:

C>Здравствуйте, HLGEN, Вы писали:



HLG>>byte a = GetA();

HLG>>byte b = GetB();
HLG>>byte c = a ^ b;


HLG>>В результате пишет, что отсутсвует превидение int в byte



C>
C>    public class test
C>    {
C>         static byte a = 0xF8;
C>         static byte b = 0x3F;
C>         static byte c = (byte)(a ^ b);

C>        public static void Main()
C>        {
C>            Console.WriteLine("0x{0:x2}", c);
C>            Console.ReadKey();
C>        }
C>    }
C>

C>вроде у меня норм работает

byte c = (byte)(a ^ b);
00000024 movzx eax,byte ptr ds:[00958A7Ch]
0000002b movzx edx,byte ptr ds:[00958A80h]
00000032 xor eax,edx
00000034 mov ebx,eax
лол...
Re[5]: Проблема с XOR
От: codenet Россия  
Дата: 18.11.06 15:09
Оценка:
Здравствуйте, LiS_at_RSDN, Вы писали:

LS_> byte c = (byte)(a ^ b);

LS_>00000024 movzx eax,byte ptr ds:[00958A7Ch]
LS_>0000002b movzx edx,byte ptr ds:[00958A80h]
LS_>00000032 xor eax,edx
LS_>00000034 mov ebx,eax
LS_>лол...

ну обьясните мудрейший в чем тут лол тоже посмеятся хочу ,а то настроения нету
Re: Проблема с XOR
От: LiS_at_RSDN  
Дата: 18.11.06 16:09
Оценка:
Здравствуйте, HLGEN, Вы писали:

HLG>У меня вопрос — я сделал xor двух байтов. В результате получился int.

HLG>Почему так получилось?

HLG>Нет, я знаю как это решить с помощью unchecked и &0xFF

эх... был бы я мудрейшим...
странно все в этом .нет. все не так, как я привык.
а разбираться с .нет все же придется.
например: сабж. какие мухи кусали разработчиков, к чему это,
что ксор 2х байтов — инт? и в дизасме ниче толкового не увидишь...
Re[2]: Проблема с XOR
От: codenet Россия  
Дата: 18.11.06 16:14
Оценка:
Здравствуйте, LiS_at_RSDN, Вы писали:

LS_>Здравствуйте, HLGEN, Вы писали:


HLG>>У меня вопрос — я сделал xor двух байтов. В результате получился int.

HLG>>Почему так получилось?

HLG>>Нет, я знаю как это решить с помощью unchecked и &0xFF

LS_>эх... был бы я мудрейшим...
LS_>странно все в этом .нет. все не так, как я привык.
LS_>а разбираться с .нет все же придется.
LS_>например: сабж. какие мухи кусали разработчиков, к чему это,
LS_>что ксор 2х байтов — инт? и в дизасме ниче толкового не увидишь...

да ничего вы не понимаете =)))) просто у разработчиков трава особая была когда они все это придумывали
Re[2]: Проблема с XOR
От: codenet Россия  
Дата: 18.11.06 16:24
Оценка:
Здравствуйте, LiS_at_RSDN:


меня уже другое волнует

почему:


class Test
{
     const byte x = 0xF8;   
     const byte y = 0x3F;
    static byte r = x ^ y;
    static void Main()
    {  
        Console.WriteLine("0x{0:x2}", r);
        Console.ReadKey();
    }
}

работает,а если x и y не обьявлять как const то неработает
Re: Проблема с XOR
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 18.11.06 21:00
Оценка: 25 (3) +1
Здравствуйте, HLGEN, Вы писали:

HLG>У меня вопрос — я сделал xor двух байтов. В результате получился int.

HLG>Почему так получилось?

Все очень просто. Стандарт C# определяет только такие predefined operator XOR:

int operator ^(int x, int y);
uint operator ^(uint x, uint y);
long operator ^(long x, long y);
ulong operator ^(ulong x, ulong y);
void operator ^(long x, ulong y);
void operator ^(ulong x, long y);


По правилам резолва операторов выбирается с сигнатурой int (int, int).

Ну а с const'ом все еще проще — оператор считается в compile-time, компилятор видит что результат укладывается в byte, и соответственно его туда кладет без шума и пыли
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[6]: Проблема с XOR
От: _d_m_  
Дата: 19.11.06 11:44
Оценка:
Здравствуйте, codenet, Вы писали:

C>Здравствуйте, LiS_at_RSDN, Вы писали:


LS_>> byte c = (byte)(a ^ b);

LS_>>00000024 movzx eax,byte ptr ds:[00958A7Ch]
LS_>>0000002b movzx edx,byte ptr ds:[00958A80h]
LS_>>00000032 xor eax,edx
LS_>>00000034 mov ebx,eax
LS_>>лол...

C>ну обьясните мудрейший в чем тут лол тоже посмеятся хочу ,а то настроения нету


Ну вобщем так:
операнды a и b кладутся в 32-х разрядные регистры с расширением старших бит нулем, а потом над регистрами производится XOR. Но что смешного — тоже неясно.
Re[7]: Проблема с XOR
От: Poul_Ko Казахстан  
Дата: 20.11.06 02:41
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Ну вобщем так:

___>операнды a и b кладутся в 32-х разрядные регистры с расширением старших бит нулем, а потом над регистрами производится XOR. Но что смешного — тоже неясно.

Всё верно. Очень советую ознакомиться с курсом INTUIT.RU: Common Intermediate Language и системное программирование в Microsoft .NET

Каждый слот стека вычислений может содержать ровно одно значение одного из следующих типов:
...
Также мы можем видеть, что допустимые типы значений для стека вычислений не совпадают с общей системой типов CTS. Например, в CTS существуют целые типы разрядности 1 и 2 байта, которые не могут содержаться на стеке вычислений. И наоборот, тип F стека вычислений не имеет аналога в CTS. Кроме того, для стека вычислений все управляемые указатели и объектные ссылки отображаются в два типа: & и O соответственно.

Давайте обсудим, как в VES осуществляется работа с типами данных, не поддерживаемыми напрямую стеком вычислений.

Во-первых, короткие целые типы (bool, char, int8, int16, unsigned int8, unsigned int16) при загрузке на стек вычислений расширяются до int32. При этом знаковые короткие целые типы (int8, int16) расширяются с сохранением знака, а беззнаковые расширяются путем добавления нулевых битов. При сохранении значения со стека вычислений в переменной, параметре, поле объекта или элементе массива происходит обратное сужающее преобразование.
Brainbench transcript #6370594
Re[6]: Проблема с XOR
От: Аноним  
Дата: 20.11.06 02:58
Оценка:
Ну вобщем так:
операнды a и b кладутся в 32-х разрядные регистры с расширением старших бит нулем, а потом над регистрами производится XOR. Но что смешного — тоже неясно.
видимо смешно то, что для байтовых операций используются четырех байтовые регистры.

а у меня другой подобный вопрос который мучает меня уже долго:

byte a = 10;
byte b = 2;
byte c = a / b;

почему компилятор ругается?
--------------
Любое удобство идет за счет мегагерцеф! : {<b>1</b>, <b>2</b>, <b>3</b>, 4}


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[7]: Проблема с XOR
От: _d_m_  
Дата: 21.11.06 09:22
Оценка:
Здравствуйте, Nimnul, Вы писали:


N>а у меня другой подобный вопрос который мучает меня уже долго:


N>byte a = 10;

N>byte b = 2;
N>byte c = a / b;

N>почему компилятор ругается?


Опрация деления: для byte — неопределена, есть для int. Вот и приводит операнды к int — результат, соответственно int
Re[7]: Проблема с XOR
От: Аноним  
Дата: 22.11.06 06:10
Оценка:
кто виноват в том что она не определена? %)
--------------
Любое удобство идет за счет мегагерцеф! : {<b>1</b>, <b>2</b>, <b>3</b>, 4}


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[8]: Проблема с XOR
От: _d_m_  
Дата: 22.11.06 10:06
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>кто виноват в том что она не определена? %)


Вопрос скорее не в том "кто виноват", а "что делать"
Re[8]: Проблема с XOR
От: Аноним  
Дата: 23.11.06 00:43
Оценка: :))
вопрос как раз в том что разработчики фв не определили операции деления для типов отличных от int, кстате сказать другие операции они тоже забыли определить. я уже не говорю, что в шарпе нет математических операторов типа cos, sin и т.д.
--------------
Любое удобство идет за счет мегагерцеф! : {<b>1</b>, <b>2</b>, <b>3</b>, 4}


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[9]: Проблема с XOR
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.11.06 12:39
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>вопрос как раз в том что разработчики фв не определили операции деления для типов отличных от int, кстате сказать другие операции они тоже забыли определить.

Я думаю, слово "забыли" здесь неуместно. IL продуман очень хорошо.
N> я уже не говорю, что в шарпе нет математических операторов типа cos, sin и т.д.
А что, они должны быть?
Ну ладно, вот так спросим: в каком языке программирования общего назначения такие операторы есть?
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Проблема с XOR
От: dimchick Украина  
Дата: 24.11.06 13:11
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>вопрос как раз в том что разработчики фв не определили операции деления для типов отличных от int, кстате сказать другие операции они тоже забыли определить. я уже не говорю, что в шарпе нет математических операторов типа cos, sin и т.д.


Зачем тебе операторы когда cos и sin реализованы в классе Math через методы?
Re[3]: Проблема с XOR
От: dimchick Украина  
Дата: 24.11.06 13:13
Оценка:
Здравствуйте, codenet, Вы писали:

C>Здравствуйте, LiS_at_RSDN:



C>меня уже другое волнует


C>почему:



C>
C>class Test
C>{
C>     const byte x = 0xF8;   
C>     const byte y = 0x3F;
C>    static byte r = x ^ y;
C>    static void Main()
C>    {  
C>        Console.WriteLine("0x{0:x2}", r);
C>        Console.ReadKey();
C>    }
C>}
C>

C> работает,а если x и y не обьявлять как const то неработает

Внимательно читай собщения компилятора и не спеши постить на форум пока не разберешся.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.