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

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

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

64-битовая строка - C++

07.10.2013, 19:47. Просмотров 1138. Ответов 3
Метки нет (Все метки)

Необходимо реализовать структуру 64-битовой строки состоящей из двух unsigned long полей, с последующей возможностью использования битовых операций(NOT, AND, OR, XOR).

Есть кое-какой код, но он просто ужасен и функция Bin(перевод в двоичную) работает не совсем верно, а именно нет возможности перевода числа более 4294967295(максимум unsigned long'а)

Заранее спасибо.

Сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <conio.h>
 
using namespace std;
 
union Str //объединение 2 полей
    {
    struct Str64
        {
            unsigned long bytes1:32;//2 поля ulong
            unsigned long bytes2:32;
        }hh;
    char byte[65]; 
    }chlst;
 
void Bin(unsigned long c, unsigned long d, char *bin)
{
        for (int i=0; i<32; i++){
        bin[i]=c>>(sizeof(c)*32-1-i)&1?'1':'0';
        bin[32]=0;}
        for (int j=32; j<64; j++){
        bin[j]=d>>(sizeof(d)*32-1-j)&1?'1':'0';
        bin[64]=0;}
}
 
void main()
{
    system("CLS");
    unsigned long c;
    setlocale(LC_ALL,"Russian");
    Str s;
            printf("Введите десятичное число:\n> ");
            while((scanf("%d", &c) != 1))
        {
            fflush(stdin);
            printf("Некорректный ввод\n");
        }   
            if(c<=4294967295)
                chlst.hh.bytes2=c;
            else
                {
                    //...?
                }
    Bin(chlst.hh.bytes1, chlst.hh.bytes2, s.byte);
    printf("Число в двоичной СС: \n%s\n", s.byte);
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 64-битовая строка (C++):

Создать класс строка и производный класс битовая строка, не работает переопределение операций - C++
Здравствуйте уважаемые форумчане.Мне очень нужна помощь в разработке класса.Сам класс вроде работает но вот 1 задание к нему неработает...

битовая маска - C++
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного числа (в пофиг какой системе исчесления).

Битовая маска - C++
Как в шифровании битовыми перестановками применить маску?

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

битовая маска - C++
надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается действительной, если ее двоичное...

Битовая инверсия - C++
Доброго времени суток! Я что-то запутался с побитовой инверсией. В коде прописываю int a=5; cout&lt;&lt;~a&lt;&lt;endl; Это же...

3
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
08.10.2013, 13:03 #2
Цитата Сообщение от HeyHey Посмотреть сообщение
Необходимо реализовать структуру 64-битовой строки состоящей из двух unsigned long полей
Ну собственно структура из двух полей. Union никакой тут не нужен. Битовые поля - тоже.

Цитата Сообщение от HeyHey Посмотреть сообщение
с последующей возможностью использования битовых операций(NOT, AND, OR, XOR)
Переопределение операторов.
C++
1
2
3
4
inline smth operator & (const smth &a, const smth &b)
  {
  return smth(a.val1 & b.val1, a.val2 & b.val2);
  }
0
HeyHey
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
08.10.2013, 20:34  [ТС] #3
Цитата Сообщение от Qwertiy Посмотреть сообщение
Ну собственно структура из двух полей. Union никакой тут не нужен. Битовые поля - тоже.
Мой косяк. Не написал. По заданию из двух битовых unsigned long полей.
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
08.10.2013, 20:50 #4
Цитата Сообщение от HeyHey Посмотреть сообщение
По заданию из двух битовых unsigned long полей.
Бред писать битовое поле размером с число...
0
08.10.2013, 20:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 20:50
Привет! Вот еще темы с ответами:

Битовая сортировка! - C++
Всем привет. Нужно написать реферат по теме &quot;Битовая сортировка&quot;. Такого в инете, а также Википедиях и прочих джерелах даже примерно не...

Битовая операция -> - C++
Что делает операция -&gt; К примеру, есть структура: struct BIT{ unsigned int cod1:3; :1;...

Битовая арифметика - C++
Почему при: int myVar = 15, mask = 0x00 00 00 01; //выделил разряды printf(&quot;%d&quot;, myVar &amp; mask); Я получаю -1? Конечно, я мог бы...

собрать число , битовая арифметика - C++
Помогите пожалуйста, а то с битовой арифметикой проблемы, получаю из color числа его каналы по следующей формуле R = (color &gt;&gt; 16) &amp;...


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

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

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