2020-06-25 20:43:14 +00:00
|
|
|
---
|
|
|
|
# Documentation: https://sourcethemes.com/academic/docs/managing-content/
|
|
|
|
|
|
|
|
title: "Bit magic in C (and C++)"
|
|
|
|
subtitle: ""
|
|
|
|
summary: ""
|
|
|
|
authors: []
|
|
|
|
tags: []
|
|
|
|
categories: []
|
|
|
|
date: 2020-06-13T19:01:19+02:00
|
|
|
|
lastmod: 2020-06-13T19:01:19+02:00
|
|
|
|
featured: false
|
|
|
|
draft: true
|
|
|
|
|
|
|
|
# Featured image
|
|
|
|
# To use, add an image named `featured.jpg/png` to your page's folder.
|
|
|
|
# Focal points: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight.
|
|
|
|
image:
|
|
|
|
caption: ""
|
|
|
|
focal_point: ""
|
|
|
|
preview_only: false
|
|
|
|
|
|
|
|
# Projects (optional).
|
|
|
|
# Associate this post with one or more of your projects.
|
|
|
|
# Simply enter your project's folder or file name without extension.
|
|
|
|
# E.g. `projects = ["internal-project"]` references `content/project/deep-learning/index.md`.
|
|
|
|
# Otherwise, set `projects = []`.
|
|
|
|
projects: []
|
|
|
|
---
|
|
|
|
|
|
|
|
# Set a bit
|
|
|
|
```c
|
|
|
|
// Set one bit high at position "bit" in input and store to output
|
|
|
|
output = input | (1 << bit);
|
|
|
|
// Shorthand
|
|
|
|
variable |= (1 << bit);
|
2020-07-05 09:14:47 +00:00
|
|
|
// Multiple bits
|
|
|
|
variable |= (0b101 << bit);
|
2020-06-25 20:43:14 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
# Clear a bit
|
|
|
|
```c
|
|
|
|
// Clear one bit high at position "bit" in input and store to output
|
|
|
|
output = input & ~(1 << bit);
|
|
|
|
// Shorthand
|
|
|
|
variable &= ~(1 << bit);
|
2020-07-05 09:14:47 +00:00
|
|
|
// Multiple bits
|
|
|
|
variable &= ~(0b101 << bit);
|
|
|
|
|
2020-06-25 20:43:14 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
# Toggle a bit
|
|
|
|
```c
|
|
|
|
// Clear one bit high at position "bit" in input and store to output
|
|
|
|
output = x ^ (1 << bit);
|
|
|
|
// Shorthand
|
|
|
|
variable ^= (1 << bit);
|
2020-07-05 09:14:47 +00:00
|
|
|
// Multiple bits
|
|
|
|
variable ^= (0b101 << bit);
|
2020-06-25 20:43:14 +00:00
|
|
|
```
|