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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
#1

Разделить старшие и младшие биты в переменной - C++

24.04.2014, 11:03. Просмотров 2115. Ответов 20
Метки нет (Все метки)

Объясните дураку работу с битовыми операциями...
Есть у меня массив, где первый элемент это 32 младших бита, а второй - 32 старших
C++
1
unsigned int sp[2] = {0x11111111, 0x22222222};
Теперь мне это нужно записать в переменную, делаю вот так
C++
1
long long var = (sp[0] << 32) | (sp[1] << 32);
Далее провожу операции над этой переменной, а затем мне заново нужно разделить старшие и младшие биты. Пытаюсь сделать так (для старшей части)
C++
1
sp[1] = (var >> 32);
В итоге на выводе получаю 0.
Что не так? И как получить младшую часть? Раньше никогда с битовыми операциями дела не имел.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 11:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разделить старшие и младшие биты в переменной (C++):

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... - C++
Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать программу: которая получает 1)случайное целое типа int,...

Ввести число в битовой форме: 8 бит, старшие биты слева, младшие – справа - C++
Код работает, но что-то неправильно считает. Не могу понять почему. Подскажите плз. /*Дано число типа unsigned char, то есть от 0 до...

Как обнулить первые 4-е бита начиная с певого заряженного (первые - старшие биты) - C++
Собственно, вопрос в заголовке.

Как получить биты переменной? - C++
Есть ли какие-то встроенные средства, с помощью которых можно определить какие биты содержит в себе переменная? Потому что cout выводит уже...

Написать функцию, меняющую в переменной типа char местами биты с номерами n и n+1 - C++
Написать функцию, меняющую в переменной типа char местами биты с номерами n и n+1 n вводится с клавиатуры Помогите, пожалуйста!

Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат - C++
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат.

20
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
24.04.2014, 13:43 #16
Цитата Сообщение от nullpointer Посмотреть сообщение
равен sp[1]. Это так и должно быть?
это будет в случае sizeof(one) = 8 то есть, если у тебя нет никаких 64хбитных переменных.
Я ещё раз тебя прошу, выведи на экран:
sizeof(sp[0])
sizeof(var)
sizeof(one )
sizeof(чего у тебя там ещё за переменные есть...)
и покажи нам! достало уже вторую страницу гадать, что там у тебя происходит!
0
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
24.04.2014, 13:52  [ТС] #17
Вот вывожу размеры переменных:
sp[0] - младшая часть синхропосылки
var - переменная в которую объединяю sp[0] и sp[1]
ctr - счетчик, с которым складываю var
Разделить старшие и младшие биты в переменной
0
newbie666
Заблокирован
24.04.2014, 14:15 #18
Цитата Сообщение от nullpointer Посмотреть сообщение
равен sp[1]. Это так и должно быть?
кто тебе сказал? Нет - после этого старшие байты должны встать на старшие места и младшие на младшие
0
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
24.04.2014, 14:20  [ТС] #19
newbie666, так вот я и говорю, что после выполнения данного участка кода вывел значение one
C++
1
2
3
one=sp[0];
one=(one<<32)|sp[1];
printf("%u",one);
и он вывел значение равное sp[1].
0
newbie666
Заблокирован
24.04.2014, 14:44 #20
Цитата Сообщение от nullpointer Посмотреть сообщение
и он вывел значение равное sp[1].
конечно ёлки палки, у тебя ж 8-и байтовая переменная. На будущее, всегда дебаггером смотри, а не какими то принт эфами как нубарь
Так проверь: printf("%llu",one);
0
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
24.04.2014, 14:51  [ТС] #21
newbie666, действительно
0
24.04.2014, 14:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 14:51
Привет! Вот еще темы с ответами:

Возвратить число, в котором переставлены две младшие цифры - C++
Возвратить число, в котором переставлены две младшие цифры. Помогите, пожалуйста. Сам не могу написать код(

Перенести ведущие нули десятичного представления в младшие разряды - C++
Помогите пожалуйста !! Нужно составить программу на Си которая переносит ведущие нули десятичного представления в младшие разряды (в...

Возвратить число, в котором переставлены две младшие цифры - C++
Возвратить число, в котором переставлены две младшие цифры. Помогите, пожалуйста. Сам не могу написать код( И пожалуйста целиком...

Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...) - C++
Уважаемые форумчане, нужна ваша помощь. Нужно составить программу, которая интерпретирует старшие 3 бита как некоторое число n и...


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

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

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