Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sacha080895
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 31
#1

Сдвиг влево на один бит - C++

29.04.2014, 22:36. Просмотров 795. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
void Bitstring::shl() 
{
    int carry=!!(str[1]&0x80000000);    
    str[0]<<=1;                         
    str[0]|=carry;                      
    str[1]<<=1;                         
}

Объясните пожалуйста что значит это "str[1]&0x80000000"
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2014, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сдвиг влево на один бит (C++):

Где и когда уместно применять операции << (сдвиг влево) и >> (сдвиг вправо)? - C++
Кто может привести пример , когда нужно использовать операции: 1) &lt;&lt; сдвиг влево 2) &gt;&gt; сдвиг вправо

Сдвиг влево - C++
Напишите программу, которая циклически сдвигает элементы массива влево (0-й элемент становится последним, 1-й становится 0-м, ...,...

массив, сдвиг влево - C++
нужен код программы, которая сдвигает элементы массива на 1 влево, тоесть было 1 5 6 8 9, стало 5 6 8 9 1 ... через функцию(в main только...

Сдвиг символа влево - C++
Помогите осуществить сдвиг символа (буквы) из циклического алфавита на n влево. То есть, например, на вход методу дается буква 'A' и число...

Логический сдвиг влево - C++
unsigned __int64 number = 239176053778592; ClongNumber c(number); c.print(); for(int i = 0; i &lt; 18; i++) { unsigned...

Циклический сдвиг влево - C++
Помогите написать программу которая будет осуществлять циклический сдвиг влево введённого числа на N разрядов (например, при сдвиге числа...

2
TrueBit
96 / 96 / 12
Регистрация: 19.11.2012
Сообщений: 195
29.04.2014, 23:17 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Sacha080895 Посмотреть сообщение
что значит это "str[1]&0x80000000"

В компьютере информация хранится в виде набора битов(по мнению программиста, но это уже другая тема), то есть в виде нулей и единиц(двоичная система счисления). 0x означает, что далее идет число в 16-ричной системе счисления. "&" означает побитовое "и" ( конъюнкция ).

str[1] & 0x80000000 делает побитовое "и" для этих двух чисел

0x80000000 = 2147483648 в десятичной = 1000 0000 0000 0000 0000 0000 0000 0000 в двоичной
если например str[1] это число 1111 1111 1111 1111 1111 1111 1111 1111

то в результате получим число
1111 1111 1111 1111 1111 1111 1111 1111 &
1000 0000 0000 0000 0000 0000 0000 0000
=
1000 0000 0000 0000 0000 0000 0000 0000

то есть результат побитового "и" только тогда 1, когда оба разряда 1, проще говоря число 0x80000000 обнуляет все разряды, кроме самого старшего(31го, нумерация с нуля, всего 32 разряда в 4 байтовом целом, 4 байт = 32 бит)

Если Windows, можете открыть калькулятор Вид-программист(Alt + 3). Там наглядно можете смотреть биты и менять системы счисления 2-10-8-16
2
Sacha080895
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 31
02.05.2014, 05:23  [ТС] #3
TrueBit, Спасибо...очень помогли...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2014, 05:23
Привет! Вот еще темы с ответами:

Сдвиг слов влево - C++
В переменной a есть строка из 5 слов. Как в цикле сделать сдвиг каждого слова влево и вывести каждый измененный результат? Например...

Побитовый сдвиг влево и вправо - C++
Что выполнится быстрее - сдвиг влево или сдвиг вправо? И как замерить время выполнения каждой из операций в коде? Добавлено через 2...

Циклический сдвиг массива влево - C++
Дан массив y1, ... , y20. Сформировать массив Z1, ... , Z20, элементы которого соответствуют элементам yi , сдвинутым на одну позицию...

Сдвиг массива влево на n знаков - C++
пишу на C++ не могу найти ошибку в коде. помогите я не очень силен только учусь))) спасибо!!! вот код #include&lt;iostream&gt; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru