-
Notifications
You must be signed in to change notification settings - Fork 16
/
bitset.txt
96 lines (82 loc) · 5.27 KB
/
bitset.txt
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
BITSET
HEADER ==> #<bitset.h>
BITSETS ==> #Sert à manipuler une suite de bits.
#Semblable à vector<bool>, sauf que :
# - la taille est fixe
# - plus de méthodes
INDEXS ==> #Commencent à 0, et en partant du least significant bit.
OUT_OF_RANGE EXCEPTION #Ces méthodes envoient une exception out_of_range si
==> #l'index donné est out of range :
# - BITSET.test()
# - BITSET.set()
# - BITSET.reset()
# - BITSET.flip()
bitset <SIZE_TYPE_VAL> #Classe de bitfields. La taille (nombre de bits) est
#fixe et égal à SIZE_TYPE_VAL. Utiliser des vector
#<bool> pour avoir une taille dynamique.
BITSET() #Instantie un BITSET rempli de 0
BITSET(ULONG_VAL) #Instantie un BITSET dont la valeur est la conversion en
#binaire d'ULONG_VAL (qui peut être sous forme octale ou
#hexadécimale). C'est éventuellement tronqué par la
#taille du BITSET.
BITSET(STRING #Instantie un BITSET dont la valeur est désignée par
[, SIZE_TYPE_VAL1 #les SIZE_TYPE_VAL2 (par défaut STRING.npos) premiers
[, SIZE_TYPE_VAL2]]) #caractères de STRING, à partir de son élément numéro
#SIZE_TYPE_VAL1 (par défaut 0).
#STRING doit être composée de 1 et de 0, sinon une
#exception invalid_argument est lancée. Si la taille de
#STRING est < à celle de BITSET, des 0 sont rajoutés
#dans les most significant bits. Si >, STRING est
#tronqué.
BITSET = BITSET2 #Copy operator
OSTREAM << BITSET #Ecrit la valeur binaire de BITSET sur OSTREAM : voir
#OSTREAM. Si BITSET est une BITSET_VAL obtenue par une
#opération, la mettre entre parenthèses. Par exemple :
# - OSTREAM << (BITSET | BITSET2)
ISTREAM >> BITSET #Lit une valeur binaire dans ISTREAM et écrit celle-ci
#dans BITSET. Voici ISTREAM.
BITSET[SIZE_TYPE_VAL] #Renvoie une référence au bit numéro SIZE_TYPE_VAL, sous
#forme de BOOL_VAL&.
#Renvoie une référence même si out of range.
#Elle ne peut être utilisée comme référence qu'avec
#l'opérateur =, pas |=, &=, ^=. On peut aussi faire :
# BITSET[SIZE_TYPE_VAL].flip()
BITSET.test(SIZ_TYP_VAL)#Même chose, mais si out of range, envoie une exception
#out of range.
BITSET == BITSET2 #Test d'égalité (même taille, même contenu)
BITSET != BITSET2 #Test d'inégalité.
BITSET & BITSET2 #Renvoie un BITSET_VAL résultant du AND binaire. Même
#chose pour ce qui suit. Doivent être de la même taille.
BITSET | BITSET2
BITSET ^ BITSET2
BITSET << SIZE_TYPE_VAL
BITSET >> SIZE_TYPE_VAL
~BITSET
BITSET &= BITSET2
BITSET |= BITSET2
BITSET ^= BITSET2
BITSET <<= BITSET2
BITSET >>= BITSET2
BITSET.set() #Tous les bits de BITSET deviennent des 1. Renvoie
#BITSET
BITSET.set(SIZE_TYPE_VAL#Le bit numéro SIZE_TYPE_VAL de BITSET devient BOOL_VAL
[, BOOL_VAL]) #(par défaut 1). Renvoie BITSET.
BITSET.reset() #Tous les bits de BITSET deviennent des 0. Renvoie
#BITSET
BITST.reset(SIZ_TYP_VAL)#Le bit numéro SIZE_TYPE_VAL de BITSET devient 0.
#Renvoie BITSET
BITSET.flip() #Equivaut à BITSET = ~BITSET
BITSET.flip(SIZ_TYP_VAL)#Equivaut à BITSET[SIZ_TYPE_VAL] = ~BITSET[SIZ_TYPE_VAL]
#sauf que BITSET est renvoyé.
BITSET.to_ulong() #Renvoie un ULONG_VAL (converti en base décimale) dont
#la valeur correspond à BITSET. Lance une exception
#overflow_error si > limite des ULONG.
BITSET.to_string() #Renvoie une STRING dont la valeur correspond à BITSET.
BITSET.size() #Renvoie le nombre de bits de BITSET (celui spécifié
#dans le template lors de l'initialisation)
BITSET.count() #Renvoie le nombre de bits dans BITSET ayant une valeur
#de 1, sous forme de SIZE_TYPE_VAL
BITSET.any() #Renvoie true si au moins un des bits de BITSET est 1.
BITSET.none() #Renvoie true si tous les bits de BITSET sont à 0.