Difference between revisions of "Intermediate C++ Game Programming Tutorial 23"
From Chilipedia
(→Video Timestamp Index) |
(→Video Timestamp Index) |
||
Line 18: | Line 18: | ||
** Biswise OR (<code>|</code>): 1010 | 1100 = 1110, also called a mash | ** Biswise OR (<code>|</code>): 1010 | 1100 = 1110, also called a mash | ||
</div> | </div> | ||
− | * Shifting operations [https://youtu.be/WPMwq0qM8Kk?t=5m10s 5:10] | + | * Shifting operations left (<code><<</code>), right (<code>>></code>) [https://youtu.be/WPMwq0qM8Kk?t=5m10s 5:10] |
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
** Shift left (<code><<</code>): 0011 << 1 = 0110, shifts binary zeros in from the right side into the lower order bit position | ** Shift left (<code><<</code>): 0011 << 1 = 0110, shifts binary zeros in from the right side into the lower order bit position |
Revision as of 04:59, 27 November 2019
Bit twiddling is a lot of bullshit that is usually avoided when possible because it leads to ass code. Still, it is necessary in various situations, so you gotta learn this shit, and now is as good a time as any I guess.
Topics Covered
- Bitwise AND (&), OR (|), and shift left/right (>> and <<)
- Unary bitwise NOT/complement (~) and bitwise XOR (^)
- Masking with & and combining with |
- Packing and unpacking smaller data in larger types
- Bit flags
- Bitwise arithmetic optimizations
Video Timestamp Index
[Expand]
- Introducing
std::string ToBin(unsigned int n, int min_digits=0);
to convert integers to their binary representation 0:15 - Bitwise operators AND (
&
), OR (|
) 1:50
- Shifting operations left (
<<
), right (>>
) 5:10
- Packing and unpacking data 7:07
- Example use case: The
Color
class in the Framework 12:20
- Packing flag values into a single integer parameter 14:29
- Advanced Bitwise operations 16:48
- WORK-IN-PROGRESS
Homework
- Figure out how the binary string formatter routine works
- Figure out why
x % 16
compiles tox & 0xF
The solution for the problems will not have its own video. Feel free to come on the discord and compare your answers with others, or to ask specific questions if you are having trouble understanding.