<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Low-Level on AI VOID</title><link>https://ai-blog.noorshomelab.dev/tags/low-level/</link><description>Recent content in Low-Level on AI VOID</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ai-blog.noorshomelab.dev/tags/low-level/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting Up Your Emulator Development Environment</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/setup-emulator-dev-environment/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/setup-emulator-dev-environment/</guid><description>&lt;p&gt;Building a Game Boy emulator from scratch is a deeply rewarding project that takes you into the heart of computer architecture and low-level system design. This journey begins by establishing a robust and efficient development environment. In this chapter, we&amp;rsquo;ll set up everything you need: the F# language, the .NET SDK, and a powerful cross-platform graphics library to bring your emulator to life.&lt;/p&gt;
&lt;p&gt;By the end of this chapter, you&amp;rsquo;ll have a fully configured F# project, ready to accept the intricate logic of Game Boy hardware. You&amp;rsquo;ll also confirm that your graphics setup is functional, providing the visual canvas for the pixels your Picture Processing Unit (PPU) will eventually render. This foundational step is critical; a well-prepared environment ensures you can focus on the complex emulation logic without fighting your tools.&lt;/p&gt;</description></item><item><title>Chapter 11: Bitwise Operations: Working at the Bit Level</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/bitwise-operations/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/bitwise-operations/</guid><description>&lt;h1 id="chapter-11-bitwise-operations-working-at-the-bit-level"&gt;Chapter 11: Bitwise Operations: Working at the Bit Level&lt;/h1&gt;
&lt;p&gt;Up until now, we&amp;rsquo;ve mostly treated data as whole numbers, characters, or floating-point values. However, at the lowest level, computers store and process all information as sequences of &lt;strong&gt;bits&lt;/strong&gt; (binary digits, 0s and 1s).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bitwise operations&lt;/strong&gt; allow you to manipulate these individual bits within integer types. This is a fundamental skill for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Low-level programming:&lt;/strong&gt; Interacting directly with hardware registers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embedded systems:&lt;/strong&gt; Controlling peripherals, setting flags.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data compression and encryption:&lt;/strong&gt; Efficiently packing/unpacking data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimized algorithms:&lt;/strong&gt; Sometimes, bitwise operations can be significantly faster than arithmetic operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Representing sets/flags:&lt;/strong&gt; Using individual bits to represent a collection of boolean states.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this chapter, we will explore C&amp;rsquo;s bitwise operators and learn how to use them effectively.&lt;/p&gt;</description></item></channel></rss>