Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Побитовое смещение 
:(
    Опции темы
Robust
Дата 25.3.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 22.6.2008

Репутация: нет
Всего: 1



Всем, привет.

Подскажите, почему при выполнение такого кода:
Код

Console.WriteLine(8 << 31);
Console.WriteLine(8 << 32);
Console.WriteLine(8 << 33);


Получается следующий результат:
0
8
16
PM MAIL   Вверх
Soah
Дата 25.3.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Оператор << (Справочник по C#)
Цитата

Обратите внимание, что i<<1 и i<<33 дают одинаковый результат, поскольку 1 и 33 имеют те же пять младших разрядов.

PM MAIL   Вверх
PashaPash
Дата 25.3.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



--cut-- smile

Это сообщение отредактировал(а) PashaPash - 25.3.2009, 20:28


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 25.3.2009, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



--cut-- smile

Это сообщение отредактировал(а) Idsa - 25.3.2009, 20:30


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Soah
Дата 25.3.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



Цитата(PashaPash @  25.3.2009,  20:26 Найти цитируемый пост)
Сдвиг циклический. Когда бит выпадает с одной стороны, он дописывается с другой.

почему тогда выводит от 0 сразу 8, где 2 и 4.

Код

Console.WriteLine(8 << 30); // 0
Console.WriteLine(8 << 31); // 0

PM MAIL   Вверх
PashaPash
Дата 25.3.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Idsa, ну переработал, бывает smile Soah правильно ответил.
Шустрые вы...

Это сообщение отредактировал(а) PashaPash - 25.3.2009, 20:30


--------------------
PM MAIL WWW   Вверх
Robust
Дата 25.3.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 22.6.2008

Репутация: нет
Всего: 1



А почему же тогда код:
Код

Console.WriteLine(8 << 31);


Дает в результате:
0

Добавлено через 5 минут и 24 секунды
Все разобрался:

Цитата

Если тип первого операнда — int или uint (32-разрядное число), начало сдвига задается пятью младшими разрядами второго операнда.

Если тип первого операнда — long или ulong (64-разрядное число), начало сдвига задается шестью младшими разрядами второго операнда.


Всем спасибо
PM MAIL   Вверх
Soah
Дата 25.3.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 1
Всего: 54



00000000000000000000000000000100
если сдвинуть единицу влево 31 раз, какое число получится smile 
PM MAIL   Вверх
Partizan
Дата 25.3.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67




 smile 
PashaPash, Idsa  smile  smile  smile  Жжоте


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.