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

Работа с битами - в файл записывается не то, что нужно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерный массив http://www.cyberforum.ru/cpp-beginners/thread253807.html
Здравствуйте. Нужна помощь в решении задачи: Дано числовой одномерный массив из 16 элементов. Найти четные элементы массива, значение которых не больше числа А, и их количество. Число А ввести с...
C++ Функция меняет все отрицательные элементы массива на максимальный Написать функцию, которая принимает одномерный массив и его размерностью. Функция меняет в массиве все элементы меньше ноля, на максимальное значения этого массива. Добавлено через 41 минуту... http://www.cyberforum.ru/cpp-beginners/thread253804.html
розбить проект на файлы C++
как подключить например File1.cpp в проект, как создать хедер файл и передать его в проект ? %-) помогите розобратся с этими вопросами, (на укр языке это наз компонування) в гугле мало что нашёл :(...
C++ Чтение полного файла в память или по кускам?
Здравствуйте. Возник такой вопрос. Как рациональнее делать в плане выигрыша процессорного времени и занятия минимального количества места? Есть файл. С его данными надо проделать некие операции и...
C++ Ковыряем SWF файлы http://www.cyberforum.ru/cpp-beginners/thread253778.html
управление SWF из вне. Задача: Есть игра на одном хххххх сайте, она написана на Flash. Хочу написать программу на c++ которая будет автоматически выполнять определённые действия, но не знаю в...
C++ Проверка метода Гаусса Написала программу решения СЛАУ методом Гаусса. Я в программировании новичек, написать написала, но она не работает. Прошу более опытных людей проверить и указать мои ошибки. Спасибо всем, кто... подробнее

Показать сообщение отдельно
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444

Работа с битами - в файл записывается не то, что нужно - C++

08.03.2011, 16:05. Просмотров 562. Ответов 2
Метки (Все метки)

собственно что хочу сделать....
Пусть b[i] - каждый бит байта a.val
b[i] ^= b[(i+4)%8] ^ b[(i+5)%8] ^
b[(i+6)%8] ^ b[(i+7)%8] ^ c;
где с для i равного 0,1,5,6 будет 1, для остальных 0.
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
48
49
50
// побитовые_операции.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
 #include <fstream> 
using namespace std;
 
union DATA {
    struct {
        unsigned b[8];
    };
    unsigned char val;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    union DATA a;
    unsigned char  cArray[256];
    int rr = sizeof(unsigned char);
    fstream out;
    out.open("t.txt",ios::out);
    for (int i = 0; i < 256; i++)
        cArray[i] = i;
    /*собственно что хочу в цлике сделать....
    Пусть b[i] - каждый бит байта a.val
    b[i] ^= b[(i+4)%8] ^ b[(i+5)%8] ^ 
    b[(i+6)%8] ^ b[(i+7)%8] ^ c;
    где с для i равного 0,1,5,6 будет 1, для остальных 0.
    */
    for (int i = 0; i < 256; i++)
    {
        a.val = cArray[i];
        for (int j = 0; j < 8; j++)
        {
            a.b[j] ^= a.b[(j+4)%8] ^ a.b[(j+5)%8]
                ^ a.b[(j+6)%8] ^ a.b[(j+7)%8];
            if ((j == 0) || (j == 1) || (j == 5) || (j == 6))
                a.b[j] ^= 1;
            else
                a.b[j] ^= 0;
            
        }
        out<<(int)a.val<<" ";
    
    }
    out.close();
    system ("pause");
    return 0;
}
в результате какая-то бредятина в файл записывается.
P.S. я не очень разобрался как работает этот union, то есть записывается в val, а потом побитово в b[i]???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru