Multiple BIT datatype columns in the same table
For a fixed length field (such as a bit value), the field will always take up the same amount of space - in your case one bit.
The NULL bitmap is in the data row itself - this stored whether a particular field is considered NULL or not. As such the field itself only has to store two values - 1 or 0 - the NULL bitmap handles whether the field is actually set to NULL or not.
The NULL bitmap has a bit for each column in the table regardless of whether the column is nullable, and this contains  the &quot;third value&quot; you mention. Again the space for the null bitmap is rounded up to an integer number of bytes.
The following code demonstrates how SQL Server stores the NULL bitmap - you'll need to replace the page numbers if you run this yourself.
CREATE TABLE TestNullBitmap (
    TestText CHAR(10) NULL
    )
GO

INSERT INTO [dbo].[TestNullBitmap] ([TestText])
VALUES
('hello'),
('hello2'),
(NULL);

--Grab the page number
DBCC IND ([TestDb],TestNullBitmap,-1);
GO

--Use the page number from DBCC IND
DBCC PAGE ([TestDb],1,631032,3) WITH TABLERESULTS;
GO

For me I get the following results for the three data rows:

0000000000000000:   10000e00 68656c6c 6f202020 20200100 00        ....hello     ...
0000000000000000:   10000e00 68656c6c 6f322020 20200100 00        ....hello2    ...
0000000000000000:   10000e00 68656c6c 6f322020 20200100 01        ....hello2    ...

The NULL bitmap is the change to that very last byte value - read in Little Endian the binary representation is 0000 0001 (IE The first column is NULL)
Rather interestingly you can also see that the system has stored the value from the previous INSERT as the actual data for the fixed length field - rather than 0'ing it out.