Как установить MSB переменной UShort?

#c#

#c#

Вопрос:

у меня есть переменная UShort Temp , которая имеет значение 1 .

Как установить старший бит этого значения равным 1.

Ответ №1:

Вы используете or для перезаписи «самого левого» бита:

 ushort temp=1;
temp |= 1<<15;
  

Где 15 количество битов в вашем типе данных (16) минус 1, потому что ваш 1 уже находится в позиции 1.

Ответ №2:

Или … поскольку вы знаете размер вашего типа данных:

 public ushort setHighOrderBit( ushort foo )
{
  return foo |= 0x8000 ;
}
  

[мой плохой. Недостаточно кофе, это я]

Комментарии:

1. Нет, константа без знака будет дополнена нулем слева, а константа со знаком будет расширена знаком. Ни в коем случае не произойдет правое заполнение.

Ответ №3:

Это должно сработать:

 ushort value = 307;
byte lsb = (byte)(value amp; 0xFFu);
byte msb = (byte)((value >> 8) amp; 0xFFu);