0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
1

Битовые операции

21.09.2011, 18:10. Показов 6739. Ответов 11
Метки нет (Все метки)

Приветствую!
Изучаю C++, не могу освоить битовые операции (перемещение, исключающие или, инвертирование всякое). Просто не понимаю смысла, если не трудно, подкиньте хорошие ссылки, или книжки, доступные для новичков, ну или объясните доступным языком Также мне не понятно значение модификаторов signed и unsigned.

Кому не сложно прошу помочь!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2011, 18:10
Ответы с готовыми решениями:

Битовые последовательности и битовые операции
Вычислить сумму по модулю 2 всех бит в позициях, номер которых кратен 2^k. (1, 2, 4, 8, 16, 32). ...

Битовые операции, битовые поля.
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций....

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и...

Битовые операции и операции смещения языка С
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает...

11
6255 / 3556 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
21.09.2011, 18:24 2
signed и unsigned - знаковое и беззнаковое. Число может быть со знаком и без знака. Т.е. положительные и отрицательные числа.

Битовые операции работают быстро. Процессор быстрее выполнит:
C++
1
int num = 12 << 1;
чем:
C++
1
int num = 12 * 2;
2
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
21.09.2011, 18:30  [ТС] 3
То есть,
signed = положительное число
unsigned = отрицательное число
?
А битовые операции используются лишь тогда, когда необходима скорость или для написания драйверов, так? Поправьте если не так
0
no0ker
21.09.2011, 18:32
  #4

Не по теме:

ссылка

0
fasked
21.09.2011, 18:48
  #5

Не по теме:

no0ker, дешевый фэйк :D http://tinyurl.com/3roxktk

1
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.09.2011, 18:49 6
Unsigned беззнаковое.
Sign - знак, приставка un- играет роль отрицания.
Это ведь так просто, нужно всего лишь
А) знать английский на уровне "чуть-чуть понимаю"
B) залезть в гугл. Там есть переводчик, не считая поисковика.

А касательно побитовых операций.
Из названия понятно, что операции производятся над битами. Как известно, любое число можно представить в виде последовательности битов. К примеру, возьмем число 12. В двоичном коде его можно представить как 1100.
При побитовом сдвиге вправо на одну цифру, число делится на 2, кра,няя правая цифра отбросится. То есть получится число 110 или, в 10-й системе счисления - 6.
Аналогично, при побитовом сдвиге влево, мы получим 24, или 11000. Последний бит будет равен нулю.
Также существуют другие побитовые операции, к примеру &(именно &, а не && - не путать!)
1010 & 1101 = 1000.
Последовательно сравниваются все биты. Если у обоих чисел, бит #i будет равен 1, то в результирующую переменную, на место i-го бита, запишется 1, в противном случае 0.

Не по теме:

no0ker, по правилам форума не рекомендуется отправлять пользователей на поисковые системы. Лучше кинуть ссылку на уже существующую тему

2
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
21.09.2011, 19:58  [ТС] 7
Вот кое-что нашел, теперь понял:
Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Возможно, что при этом самый левый бит области памяти, выделяемой для хранения значения, используется для представления знака. Если этот бит установлен в 0, то значение переменной считается положительным. Если бит установлен в 1, то значение переменной считается отрицательным.

Модификатор типа unsigned указывает, что переменная принимает неотрицательные значения. При этом самый левый бит области памяти, выделяемой для хранения значения, используется так же, как и все остальные биты области памяти - для представления значения.
А конкретно: где, когда и для чего используются эти модификаторы, то есть в чем их практическое применение?
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.09.2011, 20:06 8
Unsigned позволяет увеличить диапазон положительных чисел в 2 раза. Плюс программист может обьявить unsigned int вместо int, показывая тем самым, что переменная в принципе не может быть отрицательной(естественно, в самом коде он должен это учесть, чтобы вдруг не было переполнения), и, возможно, читающему код будет более понятен принцип работы программы.
1
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
21.09.2011, 20:08  [ТС] 9
soon, и всем остальным, спасибо, теперь все по полочкам
0
-23 / 1 / 0
Регистрация: 20.09.2011
Сообщений: 32
21.09.2011, 20:12 10
Если на примере объяснить то смотри...
long int - диапазон будет от -2 147 483... до + 2 147 483
есле же unsigned long int то от 0 до 4 294 967
1
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
21.09.2011, 20:14  [ТС] 11
Konyahinzhenya, да, я заметил это когда читал книгу, спасибо.
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
21.09.2011, 20:27 12
Все эти операции с битами вам больше пригодились если бы Вы использовали ASM как язык программирования, так особо не переживайте насчёт того что сложно понять эту тему - Вам это вряд-ли особо пригодится, Вы только ознакомьтесь всё же полностью со всеми возможными битовыми операциями чтобы если встретите их в чужом коде то могли понимать что же там написано.

Цитата Сообщение от Петррр Посмотреть сообщение
Битовые операции работают быстро. Процессор быстрее выполнит:
Код C++1 int num = 12 << 1;
чем:
Код C++1 int num = 12 * 2;
Хороший компилятор из обоих кодов сделает тоже самое в обоих случаях в виде машинного кода. Не нужно использовать именно такую "оптимизацию" сейчас в коде как умножение на число в виде сдвига, оставьте это дело компилятору. Но это не упрёк (так как в действительности если отключить в компиляторе "оптимизацию" то первый код и правда выполнится быстрее и разрабатывай мы код для каких-то серьёзных целей вроде военной техники мы бы наверняка отключили бы всю "оптимизацию" от компилятора и нам бы пришлось... но это я уже далеко отошёл от темы ), а просто информация.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2011, 20:27
Помогаю со студенческими работами здесь

Битовые операции
Помогите пожалуйста решить задачки на с++ 1.Написать программу, которая позволит ввести целое...

Битовые операции
Имеется число int x = 85; // 1010101 - двоичное представление // 6543210 - номера битов //...

Битовые операции.
подскажите пожалуйста как сделать обратное преобразование после выполнения такого кода st=1;...

Битовые операции
Народ дайте ссылку пожалуйста на задачи по сишке где нужно использовать битовые операции!...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru