this post was submitted on 15 May 2025
1166 points (98.6% liked)

Programmer Humor

25098 readers
2102 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
(page 2) 50 comments
sorted by: hot top controversial new old
[–] houseofleft@slrpnk.net 10 points 2 months ago (1 children)

Wait till you here about every ascii letter. . .

[–] answersplease77@lemmy.world 4 points 2 months ago (2 children)
[–] Iron_Lynx@lemmy.world 7 points 2 months ago* (last edited 2 months ago) (1 children)

ASCII was originally a 7-bit standard. If you type in ASCII on an 8-bit system, every leading bit is always 0.

(Edited to specify context)

At least ASCII is forward compatible with UTF-8

load more comments (1 replies)
[–] houseofleft@slrpnk.net 4 points 2 months ago (3 children)

Ascii needs seven bits, but is almost always encoded as bytes, so every ascii letter has a throwaway bit.

load more comments (3 replies)
[–] steeznson@lemmy.world 8 points 2 months ago

We need to be able to express 0 and 1 as integers so that functionality is just being overloaded to express another concept.

Wait until the person who made this meme finds out about how many bits are being wasted on modern CPU architectures. 7 is the minimum possible wasted bits but it would be 31 on every modern computer (even 64b machines since they default to 32b ints).

[–] Treczoks@lemmy.world 6 points 2 months ago

This guy never coded in KEIL C on an 8051 architecture. They actually use bit addressable RAM for booleans. And if you set the compiler to pass function parameters in registers, it uses the carry flag for the first bit or bool type parameter.

[–] ssfckdt@lemmy.blahaj.zone 6 points 2 months ago (2 children)

I swore I read that mysql dbs will store multiple bools in a row as bit maps in one byte. I can't prove it though

load more comments (2 replies)
[–] UnfortunateShort@lemmy.world 6 points 2 months ago

Wait till you realise the size of SSD sectors

[–] visnae@lemmy.world 6 points 2 months ago (1 children)

3GPP has an interesting way of serialising bools on the wire with ASN.1

NULL OPTIONAL

meaning only the type would be stored if true, otherwise it won't be set at all

load more comments (1 replies)
[–] Iceblade02@lemmy.world 5 points 2 months ago

...or you can be coding assembler - it's all just bits to me

[–] ZeroGravitas@lemm.ee 5 points 2 months ago

7 Shades of Truth

[–] kayzeekayzee@lemmy.blahaj.zone 5 points 2 months ago (1 children)

Redundancy is nice in the event of bitflip errors

[–] MNByChoice@midwest.social 11 points 2 months ago (2 children)

Is the redundancy used for bools? I mean in actual practice.

[–] kayzeekayzee@lemmy.blahaj.zone 5 points 2 months ago

iunno ¯_(ツ)_/¯

load more comments (1 replies)
[–] Valmond@lemmy.world 5 points 2 months ago

pragma(pack) {

int a:1, b:1, ... h:1;

}

IIRC.

[–] Jankatarch@lemmy.world 5 points 2 months ago* (last edited 2 months ago) (2 children)

I mean is it really a waste? What's minimum amount of bits most CPUs read in one cycle.

load more comments (2 replies)
[–] elucubra@sopuli.xyz 4 points 2 months ago (2 children)

Could a kind soul ELI5 this? Well, maybe ELI8. I did quite a bit of programming in the 90-00s as part of my job, although nowadays I'm more of a script kiddie.

[–] superheitmann@programming.dev 9 points 2 months ago (1 children)

A Boolean is a true/false value. It can only be those two values and there be represented by a single bit (1 or 0).

In most languages a Boolean variable occupies the space of a full byte (8 bit) even though only a single of those bits is needed for representing the Boolean.

That's mostly because computers can't load a bit. They can only load bytes. Your memory is a single space where each byte has a numeric address. Starting from 0 and going to whatever amount of memory you have available. This is not really true because on most operating systems each process gets a virtual memory space but its true for many microcontrollers. You can load and address each f these bytes but it will always be a byte. That's why booleans are stored as bytes because youd have to pack them with other data on the same address other wise and that's getting complicated.

Talking about getting complicated, in C++ a std::vector is specialized as a bit field. Each of the values in that vector only occupy a single bit and you can get a vector of size 8 in a single byte. This becomes problematic when you want to store references or pointers to one of the elements or when you're working with them in a loop because the elements are not of type bool but some bool-reference type.

load more comments (1 replies)
load more comments (1 replies)
[–] Amberskin@europe.pub 4 points 2 months ago

Pl/1 did it right:

Dcl 1 mybools, 3 bool1 bit(1) unaligned, 3 bool2 bit(1) unaligned, … 3 bool8 bit(1) unaligned;

All eight bools are in the same byte.

load more comments
view more: ‹ prev next ›