- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
#include <stdio.h>
#include <math.h>
void out_bin (unsigned short c){
for (int i = 11; i>=0; i--) {
if ((c & (unsigned short)(1<<i))/(1<<i)==1) printf("1");
else printf("0");
}
printf("\n");
}
int main (){
int a[8]={2,4,5,6,8,9,10,11};
int b[4]={0,1,3,7};
int d=0;
unsigned short int c=0,c1[4]={0,0,0,0};
unsigned char data=165,tdata=176;
for(int i=7;i>=0;i--)
{
if (tdata & 128){
c+=(unsigned short )(1<<a[i]);
}
tdata<<=1;
}
for (int i=0;i<8;i++){
unsigned short b = (unsigned short)((c & (unsigned short)(1<<a[i]))/(1<<a[i])) ;
if(a[i] & 1) c1[0]^=b;
else
if(a[i] & 2) c1[1]^=b ;
else
if(a[i] & 4) c1[2]^=b ;
else
if(a[i] & 8) c1[3]^=b ;
}
for (int i = 0; i < 4; i++) {
if (!c1[i]) {
c|=(unsigned short)(1<<((1<<i)-1));
}
}
printf("Data= ");
out_bin(c);
c ^= 256 ;
if ((((c & 1024)/1024) ^ ((c & 256)/256) ^ ((c & 64)/64) ^ ((c & 16)/16) ^ ((c & 4)/4) ^ ((c & 1)/1) ) !=1 ){
d += 1;
}
if ((((c & 1024)/1024) ^ ((c & 512)/512) ^ ((c & 64)/64) ^ ((c & 32)/32) ^ ((c & 4)/4) ^ ((c & 2)/2) ) !=1 ){
d +=2;
}
if ((((c & 2048)/2048) ^ ((c & 64)/64) ^ ((c & 32)/32) ^ ((c & 16)/16) ^ ((c & 8)/8) ) !=1 ){
d +=4;
}
if ((((c & 2048)/2048) ^ ((c & 1024)/1024) ^ ((c & 512)/512) ^ ((c & 256)/256) ^ ((c & 128)/128) )!=1 ){
d+=8;
}
printf("Spoiled= ");
out_bin(c);
printf("%d",d);
if (d){
c ^=(1<<(d-1));
}
printf("Corrected= ");
out_bin(c);
return 0;
}
3.14159265 17.01.2012 13:12 # +1
Вы совсем ебанулись, раз такое минусуете.
Пусть даже и лаба, но битовая говноарифметика редко попадается.
guest 17.01.2012 14:50 # 0
defecate-plusplus 17.01.2012 14:53 # 0
3.14159265 17.01.2012 14:56 # +1
То я по тупости врожденной подумал, что это извлечение 10-го бита.
guest 17.01.2012 16:19 # −6
тренируй её и всё срастётся
SmackMyBitchUp 17.01.2012 17:57 # +2
guest 17.01.2012 19:25 # −1
bugmenot 17.01.2012 16:47 # 0
guest 15.09.2012 13:45 # 0