}
void bit_array::operator -= (int i)
{ int carpos = i / CHAR_BIT ;
if (carpos < 0 || carpos >= ncar) return ; // protection
int bitpos = i % CHAR_BIT ;
adb [carpos] &= ~(1 << CHAR_BIT - bitpos - 1) ;
}
ostream & operator << (ostream & sortie, bit_array & t)
{ sortie << "<* " ;
int i ;
for (i=0 ; i
sortie << t[i] << " " ;
sortie << "*>" ;
return sortie ;
}
void bit_array::operator ++ ()
{ int i ;
for (i=0 ; i
}
void bit_array::operator -- ()
{ int i ;
for (i=0 ; i
}
void bit_array::operator ~ ()
{ int i ;
for (i=0 ; i
}
Voici un programme d’essai de la classe bit_array, accompagné du résultat fourni par
son exécution :
/* programme d'essai de la classe bit_array */
main ()
{ bit_array t1 (34) ;
cout << "t1 = " << t1 << "\n" ;
t1 +=3 ; t1 += 0 ; t1 +=8 ; t1 += 15 ; t1 += 33 ;
cout << "t1 = " << t1 << "\n" ;
t1-- ;
cout << "t1 = " << t1 << "\n" ;
t1++ ;
cout << "t1 = " << t1 << "\n" ;
t1 -= 0 ; t1 -= 3 ; t1 -= 8 ; t1 -= 15 ; t1 -= 33 ;
cout << "t1 = " << t1 << "\n" ;
cout << "t1 = " << t1 << "\n" ;
bit_array t2 (11), t3 (17) ;
cout << "t2 = " << t2 << "\n" ;
t2 = t3 = t1 ;
cout << "t3 = " << t3 << "\n" ;
}
t1 = <* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 *>
t1 = <* 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 *>
t1 = <* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 *>
t1 = <* 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 *>
t1 = <* 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 *>
t1 = <* 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 *>
358
void bit_array::operator -= (int i)
{ int carpos = i / CHAR_BIT ;
if (carpos < 0 || carpos >= ncar) return ; // protection
int bitpos = i % CHAR_BIT ;
adb [carpos] &= ~(1 << CHAR_BIT - bitpos - 1) ;
}
ostream & operator << (ostream & sortie, bit_array & t)
{ sortie << "<* " ;
int i ;
for (i=0 ; i
sortie << "*>" ;
return sortie ;
}
void bit_array::operator ++ ()
{ int i ;
for (i=0 ; i
void bit_array::operator -- ()
{ int i ;
for (i=0 ; i
void bit_array::operator ~ ()
{ int i ;
for (i=0 ; i
Voici un programme d’essai de la classe bit_array, accompagné du résultat fourni par
son exécution :
/* programme d'essai de la classe bit_array */
main ()
{ bit_array t1 (34) ;
cout << "t1 = " << t1 << "\n" ;
t1 +=3 ; t1 += 0 ; t1 +=8 ; t1 += 15 ; t1 += 33 ;
cout << "t1 = " << t1 << "\n" ;
t1-- ;
cout << "t1 = " << t1 << "\n" ;
t1++ ;
cout << "t1 = " << t1 << "\n" ;
t1 -= 0 ; t1 -= 3 ; t1 -= 8 ; t1 -= 15 ; t1 -= 33 ;
cout << "t1 = " << t1 << "\n" ;
cout << "t1 = " << t1 << "\n" ;
bit_array t2 (11), t3 (17) ;
cout << "t2 = " << t2 << "\n" ;
t2 = t3 = t1 ;
cout << "t3 = " << t3 << "\n" ;
}
t1 = <* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 *>
t1 = <* 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 *>
t1 = <* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 *>
t1 = <* 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 *>
t1 = <* 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 *>
t1 = <* 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 *>
358
