The exact behaviour depends on the specific programming language implementation (the compiler or interpreter and its version), and the specific platform.
For almost any higher-level programming language environment I have worked with over the last ~40 years which had something like a specific boolean type (which excludes assembly languages or Microsoft Basic V2), the standard memory size for an unpacked boolean variable was 1, 2, 4 or 8 bytes. A "false" value is usually mapped to the integer equivalent of zero (so all bits within the byte or bytes set to zero), and a "true" value either to a representation equivalent to an integer "1", with exactly one bit set to "one", all others to zero, or a representation equivalent to "-1", where all bits are set to "one". I have also worked with representations where "false" was mapped to the one-byte ASCII character '0' (= decimal 48 = 00110000 binary), and "true" to the one-byte ASCII character '1' (= decimal 49 = 00110001 binary), and maybe some others I probably forgot. It is also not uncommon in certain programming languages like C to interpret every number different from zero as boolean "true".
Of course, most programming language environments allow to use (or provide) datatypes for arrays of booleans which are packed in some form, so to put up to 8 boolean values into a byte.
Let me add I am pretty sure there exist some other language environments with different conventions, but I guess those are not really "mainstream". You will find some further information for several different languages here: Rosetta Code - Boolean values. For more information about the low-level functionality of computers, you may have a look into "How Do Computers Work?".