Ввод ошибок путем переключения битов - PullRequest
0 голосов
/ 29 августа 2011

У меня есть массив символов в C, в который я хочу внести ошибки, перевернув некоторые биты.

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

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Вы можете перевернуть биты, используя оператор xor:

x = x ^ mask;
x ^= mask; // Same functionality as above.

Например, если mask равно 1, младший бит переворачиваетсяВы можете создать любую желаемую маску, сдвинув биты на 1: mask = 1 << k;, где k - количество бит для смещения.

1 голос
/ 29 августа 2011

Для распределения ошибок используйте генератор случайных чисел. rand() / srand() должно быть достаточно, если это для целей тестирования.

Чтобы перевернуть бит, вы можете использовать операторы битового сдвига и битового xor.

unsigned char flip(unsigned char c, int bit) {
    return c ^ (1 << bit);
}

Вы также можете перевернуть более одного бита, используя битовую маску, отличную от (1 << bit), для которой установлен только один бит:

unsigned char flip(unsigned char c, unsigned char mask) {
    return c ^ (1 << mask);
}

// flip bits 0 and 3 (00001001 = 0x09)
flip(c, 0x09);
...