Cet intéressant article donne une liste de trucs pour manipuler les bits. Les premiers exemples sont triviaux, mais les suivants sont bien intéressants.
Je les résume ici, voir l’article pour les explications :
-
Bit Hack #1. Check if the integer is even or odd.
if ((x & 1) == 0) { x is even } else { x is odd }
: Bit Hack #2. Test if the n-th bit is set.
if (x & (1<<n)) { n-th bit is set } else { n-th bit is not set }
: Bit Hack #3. Set the n-th bit.
y = x | (1<<n)
: Bit Hack #4. Unset the n-th bit.
y = x & ~(1<<n)
: Bit Hack #5. Toggle the n-th bit.
y = x ^ (1<<n)
: Bit Hack #6. Turn off the rightmost 1-bit.
y = x & (x-1)
: Bit Hack #7. Isolate the rightmost 1-bit.
y = x & (-x)
: Bit Hack #8. Right propagate the rightmost 1-bit. (transforme tous les 0 les plus à droite en 1)
y = x | (x-1)
: Bit Hack #9. Isolate the rightmost 0-bit.
y = ~x & (x+1)
: Bit Hack #10. Turn on the rightmost 0-bit.
y = x | (x+1)
Voir aussi Bit Twiddling Hacks pour des tonnes d’astuces du même genre.
Table des matières
Tags
ack
acronymes
analyse_statique
android
apt-get
awk
bash
bits
boot
c
checksum
coq
couleurs
css
csv
cut
dessin
diff
disque
docbook
docker
documentation
dokuwiki
dot
développement
fenêtres
firefox
frama-c
fstab
ftp
gcc
gestion_de_projet
gestion_de_version
git
graph
graphe
grep
grub
gzip
heredoc
htaccess-réseau
html
ide
ikiwiki
imagemagick
images
imprimer
ip
jenkins
js-of-ocaml
langage
latex
linux
make
mercurial
merlin
nvidia
ocaml
ocamlfind
ocamlgraph
orthographe
outil
parallel
path
pdf
perl
pgp
preuve_formelle
regexp
réseau
script
sed
sphinx
sqlite
ssh
sudo
svg
svn
syncbox
syntastic
systeme
système
tableurs
tcp-ip
texte
thunderbird
tikz
time
trac
txt2tags
ubuntu
unix
usb
utf-8
vim
virtualbox
virtualisation
vnc
web
windows
xfce
xkcd
xml
xmlstarlet
xmodmap
xsd
xslt
xubuntu
zcat
zenity
éditeur
émoticône
Dernières notes
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit