Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
1

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

07.10.2013, 19:47. Просмотров 2241. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2013, 19:47
Ответы с готовыми решениями:

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

Кто поможет описать Базовый класс Строка и производную от Строки класс Битовая Строка
Для Класса строка нужны ещё указатель pChar и Word типа Word где будет хранится длина строки в...

Битовая арифметика
Добрый день, форумчане! Как реализовать функцию или процедуру так, чтоб он обменял битами между...

Битовая маска
Добрый день! Подскажите пожалуйста вот с каким вопросом: У меня есть битовая маска. Допустим, 0000....

3
827 / 635 / 100
Регистрация: 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
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
08.10.2013, 20:34  [ТС] 3
Цитата Сообщение от Qwertiy Посмотреть сообщение
Ну собственно структура из двух полей. Union никакой тут не нужен. Битовые поля - тоже.
Мой косяк. Не написал. По заданию из двух битовых unsigned long полей.
0
827 / 635 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
08.10.2013, 20:50 4
Цитата Сообщение от HeyHey Посмотреть сообщение
По заданию из двух битовых unsigned long полей.
Бред писать битовое поле размером с число...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2013, 20:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Битовая арифметика
Почему при: int myVar = 15, mask = 0x00 00 00 01; //выделил разряды printf(&quot;%d&quot;, myVar &amp; mask);...

Битовая математика
Всем привет, кто бы мог растолковать инверсию. Потому как я не понимаю как при not 9...

Битовая переменная
#include &lt;avr/io.h&gt; #include &lt;avr/pgmspace.h&gt; #include &lt;avr/delay.h&gt; struct LEDValu { ...

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


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

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

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