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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Deniska
4 / 4 / 0
Регистрация: 15.04.2009
Сообщений: 29
#1

Работа с переменными размером 64 бита - C++

22.06.2009, 00:12. Просмотров 1816. Ответов 9
Метки нет (Все метки)

Очень нужно манипулировать битами в переменной длиной не менее 64 бит (целое). Т.е. например необходимо получить 23 бит в 64 битном числе. Так вот возник вопрос, как определить такие переменные.

Я пробовал и long long и __int64 на что компилятор Borland С++ 5.0 неимоверно ругается и не позволяет это сделать. Может подскажет кто? плз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2009, 00:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с переменными размером 64 бита (C++):

Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа - C++
Дано число. Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа. код частично...

Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита - C++
Ввести целое A. Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с ервогоп бита. B=1A05h.

Работа с переменными - C++
В универе дали задание сделать что-то типо текстового редактора, выполняющего три функции: 1. Повышение регистра первых букв слов 2....

Работа со строковыми переменными - C++
Поиск позиции N-го вхождения символа C в строке s. Если такой количества вхождений нет - функция должна вернуть значение -1. ...

Работа с переменными в массиве. - C++
Пишу проект, застопорился на одном моменте: не могу понять, как можно работать с переменными в виде массива. У меня 81 переменная(каждая...

Работа со статическими и локальными переменными в классе - C++
такая проблема: пишу программу под MFC. Работа заключается в принятии посылке строки в COM-порт, затем принимает ответ и разбирает принятую...

9
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
22.06.2009, 00:25 #2
скорее всего, данный тип не поддерживается
значит работу с 64-битными числами необходимо реализовать самому

class __int64
{
...
};
0
Evg
Эксперт CАвтор FAQ
18036 / 6268 / 428
Регистрация: 30.03.2009
Сообщений: 17,243
Записей в блоге: 28
22.06.2009, 00:42 #3
"long long" и "unsigned long long". На большинстве систем размер этого типа равен 64 битам

Добавлено через 1 минуту 4 секунды
Моя тормоз. Читал невнимательно
0
Deniska
4 / 4 / 0
Регистрация: 15.04.2009
Сообщений: 29
22.06.2009, 01:21  [ТС] #4
Цитата Сообщение от Rififi Посмотреть сообщение
скорее всего, данный тип не поддерживается
значит работу с 64-битными числами необходимо реализовать самому

class __int64
{
...
};
А можно чуть подробнее как это сделать, а то я пока только хочу подружиться с С/С++
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
22.06.2009, 13:03 #5
Цитата Сообщение от Deniska Посмотреть сообщение
Очень нужно манипулировать битами
используй битовые поля:
C++
1
2
3
4
5
6
7
struct flags
   {
      long long flag1 : 2;
      long long flag2 : 2;
      <Type> name : numberOfBits;
      // ГЁ ГІГ*ГЄ Г¤Г*ëåå
   };
0
Evg
Эксперт CАвтор FAQ
18036 / 6268 / 428
Регистрация: 30.03.2009
Сообщений: 17,243
Записей в блоге: 28
22.06.2009, 13:15 #6
kazak, на его компиляторе нету long long'а
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
22.06.2009, 13:23 #7
Цитата Сообщение от Evg Посмотреть сообщение
Моя тормоз. Читал невнимательно
моя тоже
0
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
22.06.2009, 13:45 #8
ну, без long long.
компиляторноспецифические коды - это безобразие, конечно...
если размерность unsigned int = 16 бит, то так можно:
C
1
2
3
4
5
6
7
struct flags
   {
      UINT flag1;
      UINT flag2;
      UINT flag3;
      UINT flag4;
   };
а лучше класс для операций сделай.
0
Evg
Эксперт CАвтор FAQ
18036 / 6268 / 428
Регистрация: 30.03.2009
Сообщений: 17,243
Записей в блоге: 28
22.06.2009, 14:01 #9
Прежде чем рисовать структуру, надо понять, а как вообще ты со своими 64-битными константами работаешь? Твой компилятор 64-битные константы не понимает, а откуда ты их рожать собираешься? Читать из файла строковое представление константы и ручками переводить в эту структуру или как? Потому как код типа "a = 0x1122334455667788" работать у тебя не будет
0
Deniska
4 / 4 / 0
Регистрация: 15.04.2009
Сообщений: 29
22.06.2009, 23:01  [ТС] #10
Решил проблему плавным переходом и компиляцией требуемой программы в Visual Studio 2008. Тут то все нормульно заработало, надо было лишь чуть чуть подправить
0
22.06.2009, 23:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2009, 23:01
Привет! Вот еще темы с ответами:

Работа со строковыми переменными без использования string.h - C++
Нужно заменить в строке s множественные последовательности вхождений символа t на один. То есть &quot;aaabcde&quot; заменяется на &quot;abcde&quot;. Существует...

Программа для начинающих - работа с переменными типа int и вывод строки - C++
Помогите выполнить задание из книжки(не знаю када че использовать и как): Предлжите пользователю ввести возраст адресата и присвойте его...

Работа с многомерными массивами. Дана матрица размером М * N. Сформировать из этой матрицы вектор по правилу - C++
Дано матрицу размером М * N. Сформировать из этой матрицы вектор по правилу: первые N элементов вектора - это элементы матрицы первого...

Работа с указателями Организовать ввод динамического массива размером N. Заменить положительные элементы на 1, отрицательные – на -1. - C++
Работа с указателями Организовать ввод динамического массива размером N. Заменить положительные элементы на 1, отрицательные – на -1....


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

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

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