Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Операторы сдвига





значение << число_битов

значение >> число_битов

// Продемонстрировать применение операторов сдвига.

using System;

class ShiftDemo

{

static void Main()

{

int val = 1;

for (int i = 0; i < 8; i++)

{

for (int t = 128; t > 0; t = t / 2)

{

if ((val & t)!= 0) Console.Write("1 ");

if ((val & t) == 0) Console.Write("0 ");

}

Console.WriteLine();

val = val << 1; // сдвиг влево

}

Console.WriteLine();

val = 128;

for (int i = 0; i < 8; i++)

{

for (int t = 128; t > 0; t = t / 2)

{

if ((val & t)!= 0) Console.Write("1 ");

if ((val & t) == 0) Console.Write("0 ");

}

Console.WriteLine();

val = val >> 1; // сдвиг вправо

}

}

}

Результат выполнения этой программы выглядит следующим образом.

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 1 0 0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 0 0

0 0 1 0 0 0 0 0

0 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

 

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1

 

Двоичные разряды соответствуют форме представления чисел в степени 2, и поэтому операторы сдвига могут быть использованы для умножения или деления целых значений на 2. Так, при сдвиге вправо целое значение удваивается, а при сдвиге влево — уменьшается наполовину. Разумеется, все это справедливо лишь в том случае, если крайние разряды не теряются при сдвиге в ту или иную сторону.

// Применить операторы сдвига для умножения и деления на 2.

using System;

class MultDiv

{

static void Main()

{

int n=10;

Console.WriteLine("Значение переменной n: " + n);

// Умножить на 2.

n = n << 1;

Console.WriteLine("Значение переменной n после " +

"операции n = n * 2: " + n);

// Умножить на 4.

n = n << 2;

Console.WriteLine("Значение переменной n после " +

"операции n = n * 4: " + n);

// Разделить на 2.

n = n >> 1;

Console.WriteLine("Значение переменной n после " +

"операции n = n / 2: " + n);

// Разделить на 4.

n = n >> 2;

Console.WriteLine("Значение переменной n после " +

"операции n = n / 4: " + n);

Console.WriteLine();

// Установить переменную n в исходное состояние.

n = 10;

Console.WriteLine("Значение переменной n: " + n);

// Умножить на 2 тридцать раз.

n = n << 30; // данные теряются

Console.WriteLine("Значение переменной п после " +

"сдвига на 30 позиций влево: " + n);

}

}

 

 







Date: 2015-09-02; view: 344; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию