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

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

Восстановить пароль Регистрация
 
HeyHey
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
07.10.2013, 19:47     64-битовая строка #1
Необходимо реализовать структуру 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 19:47     64-битовая строка
Посмотрите здесь:

C++ битовая маска
Битовая операция -> C++
Битовая сортировка! C++
собрать число , битовая арифметика C++
C++ битовая маска
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
08.10.2013, 13:03     64-битовая строка #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);
  }
HeyHey
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
08.10.2013, 20:34  [ТС]     64-битовая строка #3
Цитата Сообщение от Qwertiy Посмотреть сообщение
Ну собственно структура из двух полей. Union никакой тут не нужен. Битовые поля - тоже.
Мой косяк. Не написал. По заданию из двух битовых unsigned long полей.
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
08.10.2013, 20:50     64-битовая строка #4
Цитата Сообщение от HeyHey Посмотреть сообщение
По заданию из двух битовых unsigned long полей.
Бред писать битовое поле размером с число...
Yandex
Объявления
08.10.2013, 20:50     64-битовая строка
Ответ Создать тему
Опции темы

Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru