Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 21

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 21 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 212019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 21)

Например: 1101 0011 1010 1010 1000 0010 В приведенном ниже примере программы демонстрируется применение поразрядного оператора ь для преобразования нечетных чисел в четные. Для этой цели достаточно сбросить младший разряд числа. Например, число 9 имеет следующий двоичный вид: 0000 1001. Если сбросить младший разряд этого числа, то оно станет числом 8, а в двоичной форме — 0000 1000. Применить поразрядный оператор Н, чтобы сделать число четным.

изьпэ зузгеи1 0 0 0 1 Поразрядное И Поразрядное ИЛИ Поразрядное исключающее ИЛИ Сдвиг вправо Сдвиг влево Дополнение до 1 (унарный оператор НЕ) 0 1 1 0 1 0 1 0 Глава 4. Операторы 109 с1аз* Махевяеп ( згап1с яо14( На1п(( ( пз(гого пша; оз(1огг 17 Гог(1 = 1; 1 <= 107 гяь( ( ппв = 11 Сопао1е.иггсеггпе("ппв: " + ппв( г пов = (озпогс( (ппв Й Охгггв)г сопзо1е.хггсеьгпе("ппв после сброса младшего разряда: пов е "Кп") г Результат выполнения этой программы приведен ниже.

пов: 1 ппв после сброса младшего разряда: 0 п1пп: 2 ппв после сброса младшего разряда: 2 п |ля: 3 ппв после сброса младшего разряда: 2 пов: 4 пов после сброса младшего разряда: 4 ппв: 5 пов после сброса младшего разряда: 4 пов: б ппв после сброса младшего разряда: 6 пов: 7 ппв после сброса младшего разряда: б ппв: 8 ппв после сброса младшего разряда: 8 пов: 9 ппв после сброса младшего разряда: 8 пов: 10 ппв после сброса младшего разряда: 10 Шестнадцатеричное значение Охрррк,используемое в поразрядном операторе И, имеет следующую двоичную форму: 1111 1111 1111 1110. Таким образом, поразрядная операция И оставляет без изменения все двоичные разряды в числовом значении переменной ппв, кроме младшего разряда, который сбрасывается в нуль. В итоге 110 Часть!.

Язык С() четные числа не претерпевают никаких изменений, а нечетные уменьшаются на 1 и становятся четными. Поразрядным оператором И удобно также пользоваться для определения установленного или сброшенного состояния отдельного двоичного разряда. В следующем примере программы определяется, является ли чисао нечетным. // Применить поразрядный оператор И, чтобы определить, является ли число нечетным. ояьпд Яуягещ) с1аяя 1яодб ( ясагьс чоьб Ма1п() ( ояЬогс пощ) ппщ = 10( 11((псщ я 1) == 1) сопяо1е.нг1сеььпе("не выводится."); ппщ = 11 10((ппщ Ь 1) == 1) Сопяо1е.нггбеЬьпе(ппщ + " — нечетное число."); Вот как выглядит результат выполнения этой программы.

11 — нечетное число. В обоих операторах 1 г из приведенной выше программы выполняется поразрядная операция И над числовыми значениями переменной пот и 1. Если младший двоичный разряд числового значения переменной пищ установлен, т.е. содержит двоичную 1, то результат поразрядной операции пшя ь 1 оказывается равным 1. В противном случае он равен нулю. Поэтому оператор 1й может быть выполнен успешно лишь в том случае, если проверяемое число оказывается нечетным. Возможностью проверять состояние отдельных двоичных разрядов с помощью поразрядного оператора ь можно воспользоваться для написания программы, в которой отдельные двоичные разряды проверяемого значения типа Ьусе приводятся в двоичной форме.

Ниже показан один из способов написания такой программы. // Показать биты, составляющие байт. оягпч Яуябещ) с1аяя ЯЬоивгся ( ягаогс чоюв Маьп() ( гпс Ьуге ча1) ча1 = 123) Гог (С=128) С > О) Ь = Ь/2) ( Глава 4. Операторы 111 11((ча1 ь с) (= О) сопво1е.хгьсе("1 ")1 10((ча1 а с) == 0) сопво1е.Хг1ге("0 ) ) ) Выполнение этой программы дает следующий результат. 01111011 В цикле гог из приведенной выше программы каждый бит значения переменной ча1 проверяется с помощью поразрядного оператора И, чтобы выяснить, установлен ли этот бит или сброшен.

Если он установлен, то выводится цифра 1, а если сброшен, то выводится цифра О. Поразрядный оператор ИЛИ может быль использован для установки отдельных двоичных разрядов. Если в 1 установлен какой-нибудь бит в любом из операндов этого оператора, то в 1 будет установлен и соответствующий бит в другом операнде.

Например: 1101 0011 1010 1010 1111 1011 Используя поразрядный оператор ИЛИ, можно без особого труда превратить упоминавшийся выше пример программы, преобразующей нечетные числа в четные, в приведенный ниже обратный пример, где четные числа преобразуются в нечетные. /! Применить поразрядный оператор ИЛИ, чтобы сделать число нечетным. паьпд Зуапев; с1аав Макебсб ( агаоьс чо10 Маьп() ( оаьогс пшп1 папого Гог(1 = 1; 1 <= 10; ьт+) ( пов = 11 Сопао1е.нг1пешпе("ппв: " + ппв) пов = (папесс) (пов ) 1) Сопво1е.ыгтгегппе("пов после установки младшего разряда: ПОВ + "'1П") 1 Результат выполнения этой программы выглядит следующим образом. пов: 1 пов после установки младшего разряда: 1 пов: 2 112 Часть б Язык СФ ппв после установки младшего разряда: 3 ппв: 3 ппв после установки младшего разряда: 3 пов: 4 пов после установки младшего разряда: 5 пшп: 5 пов после установки младшего разряда: 5 пов: б ппв после установки младшего разряда: 7 пшп: 7 ппв после установки младшего разряда.

"7 ппв: 8 пав после установки младшего разряда: 9 пшп. "9 ппв после установки младшего разряда: 9 пшп: 10 ппв после установки младшего разряда: 11 В приведенной выше программе выполняется поразрядная операция ИЛИ над каждым числовым значением переменной ппв и 1, поскольку 1 дает двоичное значение, в котором установлен младший разряд. В результате поразрядной операции ИЛИ над 1 и любым другим значением младший разряд последнего устанавливается, тогда как все остальные разряды остаются без изменения. Таким образом, результирующее числовое значение получается нечетным, если исходное значение было четным.

Поразрядный оператор исключающее ИЛИ устанавливает двоичный разряд операнда в том и только в том случае, если двоичные разряды сравниваемых операндов оказываются разными, как в приведенном ниже примере. 0111 1111 1011 1001 1100 0110 У поразрядного оператора исключающее ИЛИ имеется одно интересное свойство, которое оказывается полезным в самых разных ситуациях. Так, если выполнить сначала поразрядную операцию исключающее ИЛИ одного значения Х с другим значением у, а затем такую же операцию над результатом предыдущей операции и значением т, то вновь получится первоначальное значение Х.

Это означает, что в приведенном ниже фрагменте кода 81=Х" Х; 82 = к1 " т; значение переменной Н2 оказывается в итоге таким же, как и значение переменной Х. Следовательно, в результате двух последовательно выполняемых поразрядных опера- Гвава 4. Операторы 113 ций исключающее ИЛИ, в которых используется одно и то же значение, получается первоначальное значение.

Этим свойством данной операции можно воспользоваться для написания простой программы шифрования, в которой некоторое целое значение служит в качестве ключа для кодирования и декодирования сообщения с помощью операции исключающее ИЛИ над символами этого сообщения. В первый раз операция исключающее ИЛИ выполняется для кодирования открытого текста в зашифрованный, а второй раз — для декодирования зашифрованного текста в открытый. Разумеется, такое шифрование не представляет никакой практической ценности, поскольку оно может быть легко разгадано.

Тем не менее оно служит интересным примером для демонстрации результатов применения поразрядных операторов исключающее ИЛИ, как в приведенной ниже программе. // Продемонстрировать применение поразрядного оператора исключающее ИПИ. пя1по яуятеш; с1аяя Насосе ( ясасгс чотб Маьп () ( с» сь» = 'Н'» с»»ат сь2 = '1' » сЬат сьз = '! ') 1пт Кеу = 88; Сопяо1е.иттте(ипе (" Исходное сообщение: " + сп1 + сп2 + сдз) Зашифровать сообщение.

с)11 = (с»»ат) (спь " )ьеу)) сь2 = (сЬат) (сь2 " Хеу)) спЗ = (спас) (спЗ " Хеу) ) Сопяо1е.нтттеглпе("Зашифрованное сообщение: " + сд1 + сь2 + сиз)) // Расшифровать сообщение. сд» = (сдал) (сп1 " Кеу)» сь2 = (сдал) (сб2 " Кеу); с)»З = (с)»ат) (сьЗ " Хеу)) Сопяо1е.итттеьтпе("Расшифрованное сообщение: " + свг + сь2 + с)»З) ) ) Ниже приведен результат выполнения этой программы. Исходное сообщение: Нт! Зашифрованное сообщение: ЬЗ1у Расшифрованное сообщение: Нт! Как видите, в результате выполнения двух последовательностей поразрядных операций исключающее ИЛИ получается расшифрованное аюбщение.

(Еще раз напомним, что такое шифрование не имеет никакой практической ценности, поскольку оно, в сущности, ненадежно.) Поразрядный унарный оператор НЕ (или оператор дополнения до 1) изменяет на обратное состояние всех двоичных разрядов операнда. Так, если некоторое целое значение А имеет комбинацию двоичных разрядов 1001 0110, то в результате поразрядной операции -я получается значение с комбинацией двоичных разрядов 0110 1001. 114 Часть (. Язык С№ В следующем примере программы демонстрируется применение поразрядного оператора НЕ с выводом некоторого числа и его дополнения до 1 в двоичном коде. Продемонстрировать применение поразрядного унарного оператора НЕ.

вязнем зуясеиг с1аяя Ноооето ( ясастс чозб Мвтп () ( вЬусе Ь = -Зяг С=128г С > Ог с = с/2) ( а с) != 0) сопяо1е.хг1се("1 ") а С) == 0) Сопяо1е.игзяе("0 ") Гог (зпС 11 ( (Ь 11((Ь ) Сопяо1е Хгтяе11пе() обратить все биты Ь = (яЬуСе) -Ьг Гог(1пС С=128; С > Ог с = с/2) ( 11((Ь а С) != 0) сопяо1е.ис1се("1 ") 11((ь а с) == 0) сопяо1е.хгьсе("0 ) Результат выполнения этой программы приведен ниже. 1 1 0 1 1 1 1 О 0 0 1 0 0 0 0 1 Операторы сдвига В СФ имеется возможность сдвигать двоичные разряды, составляющие целое значение, влево или вправо на заданную величину. Для этой цели в СФ определены два приведенных ниже оператора сдвига двоичных разрядов.

Характеристики

Тип файла
DJVU-файл
Размер
7,66 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее