С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
1

Объясните что делает эта строка кода - num = (ushort) (num & 0xFFFE) ?

23.02.2016, 23:23. Показов 4602. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вся программа:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Using System;
class MakeEven
 {
 static void Main() 
{
 ushort num;
 ushort i;
 for(i = 1; i <= 10; i++)
 {
 num = i; Console.WriteLine("num: " + num);
 num = (ushort) (num & 0xFFFE);
 Console.WriteLine("num после сброса младшего разряда: " + num + "\n");
 }
 }
 }
Никак не могу понять что делает эта строка - num = (ushort) (num & 0xFFFE);
p.s. Только изучаю С#.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2016, 23:23
Ответы с готовыми решениями:

Объясните, что делает эта строка кода?
string s = new string(s.ToCharArray().Reverse().ToArray()); Пожалуйста, объясните супер подробно,...

Объясните, что делает строка кода
МОжете объяснить что делает эта строка: string digits = &quot;0123456789abcdefghijklmnopqrstuvwxyz&quot;;в...

Есть кусок кода, объясните что он делает
private double GetRisk(Dictionary&lt;string, double&gt; dF, double Prob) { if (Prob &lt; -4.0) ...

Что делает строка кода Random.Next(5)
Подскажите, что делает данный метод? public Random Randomizer; Randomizer.Next(5); Думал что...

6
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
23.02.2016, 23:36 2
Конвертирует в ushort значение (num & 0xFFFE)
0
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 565
23.02.2016, 23:47 3
Сбрасывает у num младший бит (о чём тонко намекает следующая строка в коде). Т.о. четные значения остаются чётными, а нечетные становятся четными и меньшими на 1.
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
24.02.2016, 00:03 4
TuM0xA,
Это тоже, что и
C#
1
num = (ushort)(num & ushort.MaxValue-1);
ushort.MaxValue-1 или 0xFFFE - это значение из 16 бит из которых младший равен нулю, остальные единице.
При побитовой конъюнкции если хотя бы один бит равен 0 итоговый бит тоже равен 0. Поэтому в итоге у num-результата все биты кроме младшего не изменяются, а младший становится равным 0.

Т.е. если число нечетное:
1001 (9) &
1110 (0xFFFE)
---------------- =
1010 (8)

Если четное:
0110 (6) &
1110 (0xFFFE)
---------------- =
0110 (6)

Старшие биты не показаны, ибо не важны.
2
0 / 0 / 0
Регистрация: 25.06.2020
Сообщений: 5
25.06.2020, 21:24 5
1000 (8)

Спасибо за разъяснение. Так бы каждый пример из учебника...
0
0 / 0 / 0
Регистрация: 27.01.2023
Сообщений: 12
29.01.2023, 14:03 6
Кажется здесь ошибка. (8) в двоичной системе выглядит как "1000", а не "1010".

Тоже сейчас разбираюсь на этот месте.
FFFE это шестнадцатеричный вид числа 65534 в десятичном виде, или в двоичном: 1111111111111110.

В C# шестнадцатеричные литералы должны начинаться с символов «0x«.
Если в код вместо 0xFFFE написать 65534, то всё работает аналогично. А вот если написать 1111111111111110 то не работает...
Почему? C# при объявлении типа ushort воспринимает только шестнадцатеричный и десятичный вид?
0
Эксперт JavaЭксперт по электронике
3087 / 2171 / 551
Регистрация: 04.09.2018
Сообщений: 7,422
Записей в блоге: 3
29.01.2023, 14:32 7
Цитата Сообщение от Oleg1302 Посмотреть сообщение
если написать 1111111111111110
C#
1
0b1111111111111110
1
29.01.2023, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2023, 14:32
Помогаю со студенческими работами здесь

что и как делает эта строка ciphertext = ciphertext + (char) (str[i] ^ key);?
вот код: /* В этой реализации интерфейса ICipher используется побитовая обработка и ключ. */...

Что делает эта строка кода
a(i,j)= INT(RND*21-10) Что значит данный оператор и какую функцию он выполняет в матрице? я...

Почему Для num = 999999999, num * 10 = 2147483647 ?
Кто-нибудь объясните , пожалуйста. Почему при VAR num: integer; Для num = 999999999; num...

Объясните пожалуйста, что делает строка кода? (внутри)
Учусь писать на яве, накопал в инете пример сорса ползунка. Можете объяснить, что делают эти две...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru