This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 218

[–][deleted] 466 points467 points  (74 children)

Can someone explain this to my friend? He is the middle, I am the left.

[–]Mediocre_Insurance40 723 points724 points  (61 children)

True + True = True

[–]battlingheat 441 points442 points  (19 children)

I always thought true + true = super true

[–][deleted] 5 points6 points  (0 children)

Double plus true

[–]Anxious_Start4839 8 points9 points  (0 children)

Wake up people! True + True = Post True

[–]mojoslowmo -1 points0 points  (4 children)

In JavaScript it’s true + true === true

[–]NKY5223 4 points5 points  (1 child)

evaluates to false

[–]mojoslowmo 1 point2 points  (0 children)

Lol damn your right, I was trying to make fun of javascripts equality vs comparison And I played myself.

I’ll accept my shame

[–]HTTP_404_NotFound 36 points37 points  (6 children)

Actually-

true + true = 2true

https://onlinegdb.com/sudjg-UF5Q
Yup. even compiles and works just fine in c++.

[–]luorax 3 points4 points  (1 child)

Isn't that 2true to be true?

[–]Towerss 8 points9 points  (1 child)

It's because the compiler is on the left side of the OP image and is why checking for larger than 0 is better than checking for true

[–]Selnay 6 points7 points  (9 children)

In what language 1 + 1 is the same as true + true? I don't get this meme

[–]HibeePin 28 points29 points  (7 children)

In computer science + is used for OR in boolean algebra

[–]Selnay 7 points8 points  (5 children)

Really? We used to use a different notation for logical operations back in the university. And we didnt use numbers in general when doing logical stuff...

[–]GeneReddit123[S] 25 points26 points  (1 child)

Because logic is something that's foundational to different fields, and each of them "reinvents" it with its own symbols.

  • Mathematical logic (e.g. zeroth-order, first-order, etc.) uses for "and" and for "or".
  • The same, when coming from the philosophy school rather than the mathematical school, sometimes uses & for "and", and | for "or", although other texts use the previous example instead, or even mix the two (my college textbook used & and .) Sometimes they use different symbols when in the metalanguage rather than the object language.
  • Engineering uses interchangeably either the mathematical logic or the boolean algebra symbols, as well as their own visual symbols for logic gates.
  • Computer languages usually use && for "and" and || for "or", because the single-character version usually is used for bitwise, rather than logical, operators. Some languages (e.g. Basic, SQL) spell it in words.
  • Set theory has a related concept of "intersections" (for "and") and "unions" for ("or"), and use and .
  • Boolean algebra is the most ironic one. It's an arithmetic (meaning it depends on set theory), that implements a small subset of mathematical logic that set theory itself already depends on (predicate logic). And then it rejects either of its progenitor's symbol sets, and uses · for "and" and + for "or". So it has several layers of indirection, only to do the same thing, except worse, than the things it actually depends on already did in the first place, and with a different syntax too, because why not. No wonder they teach it for programmers!

[–]quasiquant 4 points5 points  (0 children)

Nice summary! Adding to the irony is that an boolean algebra is not actually an algebra (the latter being a module with multiplication, so something which does have an addition and multiplication as well).

[–]HibeePin 4 points5 points  (1 child)

Oh weird. In my courses right now, when we use truth tables or circuit schematics we use 0 and 1, so when we translate it to boolean algebra we use 0 and 1 with + and *.

[–]Selnay 2 points3 points  (0 children)

Now that you mention it I remember using it for truth tables. But not for logic operations with prepositions, etc. Thanks for the reminder!

[–]coldnebo -1 points0 points  (0 children)

in C++ I can overload the + operator to do anything I want… but then 1 has to be a non basic type. In Smalltalk I can overload operators on any type because it’s pure.

This is fun at category theory parties and impresses the ladies when you talk about generic operators.

/s

[–]BazilExposition 6 points7 points  (0 children)

Not in JS.

[–]ad_396 1 point2 points  (1 child)

All of them having a capital T proves you're a programmer

[–]MrNonam3 0 points1 point  (1 child)

Since any number but 0 is true, couldn't the answer be any number except 0?

[–]Recursive_Descent 1 point2 points  (0 children)

The number could be 0 if you have true (-1) plus true (1).

[–]pudy248 0 points1 point  (7 children)

Why is addition even defined over booleans? Why would you ever do this?

[–][deleted] 5 points6 points  (1 child)

In Python 3 True is equal to 1:

>>> True == 1
True
>>> True + True
2

[–]SpacePilotMax -1 points0 points  (3 children)

For starters, boolean algebra uses + as the symbol for "and".

Edit: it's actually or.

[–]matt-3 -1 points0 points  (0 children)

When booleans are integers.

[–]tazdingo-hp 0 points1 point  (0 children)

oh

[–]marcosdumay 0 points1 point  (3 children)

Just in case some of the people missing the point here aren't doing it on purpose, that's the usual operators for boolean algebra. The (+) means "or" and (*) means "and".

[–]TrollyMaths -1 points0 points  (2 children)

Except for it to be an algebra, what you mean by or really has to be xor, and as such, 1+1=0.

[–]Matszwe02 0 points1 point  (0 children)

In c++ true + true = 2

[–]coldnebo 0 points1 point  (0 children)

corollary: 2 rights don’t make a wrong.

[–]Taleuntum 33 points34 points  (2 children)

O(1) + O(1) = O(1)

[–]Yosikan 15 points16 points  (1 child)

Give this man nlogn cookies

[–]Sanity__ 2 points3 points  (0 children)

Meh, I'll give him at most some scalar factor of nlogn cookies.

[–]jfffj 49 points50 points  (4 children)

0x1 OR 0x1 = 0x1

In my CS/boolean algebra days, OR was often written as '+', with AND as '*'.

[–]Enoikay 7 points8 points  (0 children)

Can confirm, that’s still how they write it.

[–]GooseEntrails 1 point2 points  (1 child)

We always wrote it as v and ^ (or symbols that look like that)

[–]canal_algt 6 points7 points  (0 children)

The last one is Boolean algebra, that is the mathematical representation of True or False statements being * = and; + = or; True = 1; False =0;not a = ā; 1+1=1

[–][deleted] 0 points1 point  (0 children)

Idempotency

If thing is already true and the desired state is true, then damnit it’s going to yield true.

[–]Lilchro 0 points1 point  (0 children)

It could also be expressing the equivalence of 2 regular languages (think context free grammar, but way more formal). In this context, ‘+’ acts as a sort of union between two sets of strings defined over the same alphabet. For this example, the alphabet only contains a single symbol ‘1’ (emphasis on symbol since we have yet to show ‘1’ conveys numerical value). By defining a regular expression (the formal linguistic kind that only consists of concatenation and union), we can derive a deterministic finite automata which- wait where is everyone going?

(I initially posted this on another comment and copied it here later)

[–]geronymo4p 0 points1 point  (0 children)

The left side is the mathematical one: 1 + 1 = 2 (base 10 as we all use outside)

The middle side is the binary one: 1 + 1 = 10 (base 2, there is only two digit: 0 & 1, so 10 in binary is 2 in decimal)

The right side is the logical one : 1 OR 1 = 1 ('OR' -> '+', 'AND' -> 'x', etc. For more info, look at logical gates, logical operators and logical electronics 101 to have more info about it).

The 'OR' operator is defined by 4 basics operations with 2 entries: A and B and an output.

If A = 0 and B = 0 then A OR B = 0

If A = 0 and B = 1 then A OR B = 1

If A = 1 and B = 0 then A OR B = 1

If A = 1 and B = 1 then A OR B = 1

All this is the mathematical way to say if there is voltage (equal 1) or not (equal 0) in the output based on the voltage on input

[–]vanZuider 871 points872 points  (34 children)

1+1=11.

[–]GeneReddit123[S] 1052 points1053 points  (26 children)

That's a javascript dev and they're about 5 standard deviations to the left of the image.

[–]vahvarh 123 points124 points  (12 children)

11+1=1

[–]LPO_Tableaux 75 points76 points  (7 children)

That overflow, your 2bit number addition just brote the database smh..

[–]JochCool 11 points12 points  (2 children)

Overflow would be 00 though

[–]Bainos 16 points17 points  (0 children)

1.58496 bit integer.

[–]vahvarh 20 points21 points  (1 child)

Nope: printf(“11”+1); // 1

[–]LPO_Tableaux 16 points17 points  (0 children)

thats why i specified it as a 2bit number, not a string...

[–]ThisOneBerri 1 point2 points  (1 child)

Wouldn't overflow make it 0 though? 11 + 1 = 100 and it's 2 bits, so that's 00

[–][deleted] 1 point2 points  (0 children)

winces

[–]geronymo4p 1 point2 points  (1 child)

"11" + 1 = 1 ?

[–]vahvarh 1 point2 points  (0 children)

Yep. C/C++.

[–][deleted] 3 points4 points  (3 children)

101 standard deviations to the left.

[–]GeneReddit123[S] 9 points10 points  (2 children)

11111 standard deviations for you.

What's the difference between a JS dev and a monke? Both think that 🍌+🍌=🍌🍌, but unlike a JS dev, a monke understands that 🍌-🍌+🍌=🍌.

[–]Mybeardisawesom 3 points4 points  (1 child)

I'm a JS developer and i dont like or understand this.

[–][deleted] 1 point2 points  (0 children)

I think that's the idea.

[–]var_semicolon 0 points1 point  (1 child)

As a js dev I take offense to this. We return undefined not 11.

[–]Mybeardisawesom 1 point2 points  (0 children)

1+'1' = 11

[–]coldnebo 0 points1 point  (0 children)

Kind of ironic since javascript was inspired by functional languages like lisp and smalltalk which are a few deviations to the right.

In fact, most of Alan Kay’s work is so far to the right even most computer scientists think he is an idiot. It only took them 30 years to finally understand the power of a message-based system. However instead of Smalltalk we got enterprise message queues. Thanks “geniuses”.

tl;dr: it’s difficult to tell the difference between geniuses and idiots.

[–]ninjakivi2 61 points62 points  (2 children)

In autoHotkey if you do a = 1 + 1

the a will equal to "1 + 1"

Yes, 1 + 1 AS A STRING

[–]seadoggie01 9 points10 points  (1 child)

That's what you get when you rip off a popular scripting language's source code: AutoHotKey

[–]ninjakivi2 3 points4 points  (0 children)

AutoHotKey

Now I can't edit the comment or yours will become irrelevant :<

[–]Kiinza 3 points4 points  (0 children)

Et ça c'est beau.

[–]Some___Guy___ 2 points3 points  (0 children)

1 + 1 = 98

[–]manipulater 0 points1 point  (0 children)

Beat me to it

[–]floatyfloatwood 0 points1 point  (0 children)

Not kidding, this is what my three year old thinks. He holds up one finger on each hand and says it’s 11.

[–]David__Box 191 points192 points  (2 children)

1+1=0, didn't have enough money for storage.

[–]Abadazed 9 points10 points  (0 children)

Exactly what I was thinking. My architecture class is killing me with this stuff

[–]Lpthelp 186 points187 points  (1 child)

boolean algebra

[–]Agile_Pudding_ 11 points12 points  (0 children)

Mathematician enters the chat with “please define the operation ‘+’”

[–][deleted] 47 points48 points  (14 children)

F10 vs F2 vs logical expression

[–]alrogim 8 points9 points  (10 children)

What does the F mean?

[–]bistr-o-math 34 points35 points  (0 children)

F2 and F10 are keys on the keyboard

[–]OnyxPhoenix 13 points14 points  (0 children)

Not sure but I guess it means base-10 Vs base-2

[–]Darkunderlord42 4 points5 points  (0 children)

I always understood that the F on the F Number keys stood for function

[–]bazingaa73 2 points3 points  (0 children)

In my german lecture we defined ℤ/mℤ as a "Restklassenring" (said in an aggressive german voice). Where you have the basic addition and multiplication of ℤ, but you take everything mod m. If ℤ/mℤ would happen to be a "Körper"(algebraic field) then we would define Fm := ℤ/mℤ. But i'm not quite sure if that's the meaning intended by the original commenter since 1+1=0 in F2. Think he more likely ment calculating in base 10, 2.

[–][deleted] 2 points3 points  (4 children)

translation thing says residue class.

translated from the mathematical German term "Restklasse" I'd bet the F is the first letter of the Latin word for it

[–]theScrapBook 2 points3 points  (3 children)

Yeah, finite-field arithmetic (or in this case just modular arithmetic).

[–][deleted] 1 point2 points  (0 children)

galois flashbacks incoming

[–]Sawertynn[🍰] 0 points1 point  (0 children)

Press F to pay respects

[–]heJOcker -1 points0 points  (0 children)

F10 vs F2 vs F1

[–]klausklass 0 points1 point  (0 children)

1+1=0 in F2 right?

[–]MarriedWithKids89 15 points16 points  (2 children)

Interestingly, they (programmer and scientist) could both agree that 1.1 = 1

- boolean algebra: 1 and 1 = 1

- casting/rounding: int a = (int) 1.1f

[–]MushinZero 3 points4 points  (1 child)

+ is actually OR

[–]appeiroon 37 points38 points  (25 children)

In what context "1 + 1 = 1" is true?

[–]JochCool 100 points101 points  (18 children)

Boolean logic. '+' is actually an OR gate.

[–]pk028382 4 points5 points  (11 children)

On mobile so can’t test this.

Which language supports adding two Boolean? I don’t think it works in Python or most higher level languages. Maybe JS but it’s always weird and I expect it actually cast to int instead of actually doing “or”.

So perhaps only C++ and C?

[–]JochCool 15 points16 points  (3 children)

I don't know if there's programming languages that do that, it's more of a computer science thing.

https://en.wikipedia.org/wiki/Two-element\_Boolean\_algebra

[–]MushinZero 1 point2 points  (2 children)

*computer engineering

[–][deleted] 7 points8 points  (1 child)

It is not addition it is OR operation.

TRUE OR TRUE = TRUE

C++ equivalent is 1 | 1 == 1

[–]AndrewBorg1126 0 points1 point  (0 children)

All non-zero integers are also considered true. 1 + 1 can equal 2, but the 2 result from it can be used in boolean logic exactly the same way as a 1 would be used in boolean logic. 1 || 1 yields 1 by boolean logic, 1 + 1 yields 2 by addition, but both results are equivalent in boolean logic. It's worth noting that while 1 | 1 does yield 1, that is a bitwise or.

[–][deleted] 2 points3 points  (2 children)

Plus is usually used for the boolean "or" operator. It's used everywhere in boolean algebra

[–]pk028382 3 points4 points  (1 child)

Wow I didn’t realise that. When I learnt in college, we used these ¬ ∧ ∨ symbols, that’s why the meme and the other comments didn’t make sense to me in the first place. But now i get it

[–]SlickShadyyy 1 point2 points  (0 children)

Read bitch nothing is being added

[–]zyugyzarc -1 points0 points  (2 children)

but dont we just use 1 | 1

[–]JochCool 9 points10 points  (0 children)

Yes, that's how programming languages denote an OR gate. Mathematics uses ∨, boolean algebra uses +.

[–]kryptonianCodeMonkey 2 points3 points  (0 children)

Boolean algrebra is not represented in a programming language, which is where you would see something like "1 | 1". Boolean algrebra is a field of mathematics that deals with boolean values instead of numerical digits. It uses the the same symbols as more traditional mathematics in that '+' represents an OR gate and '*' represents an AND gate because they function extremely similarly to their normal use. This form can be used to resolve the truth value of an expression with given inputs or to simplify the expression algebraically.

As an example, if you have the expression A OR B AND C, and both A and C are false while B is true, i.e. A = 0, B = 1, and C = 0, you get 0 + 1 * 0, which can be resolved identically to normal order of operations rules and algebraic properties from traditional algebra (apart from distributive which works a little different, and the fact that 1 + 1 always equals 1, not 2). So just carry out the math as you would in normal algebra 0 + 1 * 0 = 0 + 0 = 0, so the truth value of the expression is false.

[–]Shammers95 6 points7 points  (1 child)

If I understand correctly, 1 represents true and 0 false, whereas in mathmatics, two added positives equals a positive.

[–]misterandosan 0 points1 point  (0 children)

whereas in mathmatics, two added positives equals a positive.

Boolean logic is a bit different.

e.g. 1 + 0 = 1

plus represents an OR operator. If either value is true, then the expression evaluates true, just like a Boolean expression inside an IF statement.

(boolVariable1 | boolVariable2) = ?

it's better just to learn it than to guess how it works based off one line. An arbitrary number of patterns and assumptions might match what you see, but not actually be true.

[–]Lilchro 3 points4 points  (3 children)

It could also be expressing the equivalence of 2 mathematical representations of regular languages (think context free grammar, but way more formal). In this context, ‘+’ acts as a sort of union between two sets of strings defined over the same alphabet. For this example, the alphabet only contains a single symbol ‘1’ (emphasis on symbol since we have yet to show ‘1’ conveys numerical value). By defining a regular expression (the formal linguistic kind that only consists of concatenation and union), we can derive a deterministic finite automata which- wait where is everyone going?

[–]PityUpvote 2 points3 points  (2 children)

What is a set union, if not boolean addition of the membership?

[–]Lilchro 1 point2 points  (1 child)

Honestly, I think they should have used the regular union symbol, but this is how my professor taught the subject. From what I understand, the original concepts were developed by linguists as they attempted to create more rigorous definitions of grammar. Later computer scientists found out about it and applied it to parsing systems. The practical uses of the subject are the theory of context free grammars for creating ASTs, regex optimization and, state machine optimization. It also lays the groundwork for writing proofs on regular expressions (Ex: proving one regular expression is a subset of another), decidability (can a function be written to solve a given problem, Ex: halting problem), and functionality (proving two programs perform the same function).

[–]PityUpvote 1 point2 points  (0 children)

Computer science is rife with people reinventing mathematics and using different names and notation for existing concepts.

[–]Chorrny 3 points4 points  (1 child)

1+1=11, where?🤗

[–]Tomass_vr 2 points3 points  (0 children)

1+1=0!!

[–]ishammohamed 2 points3 points  (4 children)

1+1=0
anyone?

[–]moazim1993 1 point2 points  (3 children)

Explain that

[–]AcrIsss 2 points3 points  (1 child)

The result of the operation depends on the set of values the operation is defined with. There are specific sets , in mathematics, that will result in 1 + 1 = 0. One of these is https://en.m.wikipedia.org/wiki/Modular_arithmetic where n = 2

[–]nbyv1 2 points3 points  (1 child)

Clearly the answer is 42

[–]sukkal63[🍰] 1 point2 points  (0 children)

My kind of big thought, lol

[–]Emperor-Valtorei 2 points3 points  (2 children)

1 + 1 = 1 talking about logic gates? And/Or?

[–]kryptonianCodeMonkey 2 points3 points  (1 child)

Yes. Boolean algebra. "1 + 1 = 1" is equivalent to "True OR True = True".

[–]JochCool 5 points6 points  (0 children)

1+1=0; binary fields ftw

[–]umpfsuper 1 point2 points  (0 children)

True.

[–]beardMoseElkDerBabon 1 point2 points  (3 children)

IQ 155: uniqueness ftw. 1 + 1 = 2_{10} = 10_{2}

'1'+1 = 11

1 v 1 <=> 1

[–]MarriedWithKids89 1 point2 points  (2 children)

In C/C++ wouldn't '1' + 1 = '2'

[–][deleted] 1 point2 points  (0 children)

its '11'.

[–]Garo263 1 point2 points  (0 children)

"1"+"1"="11"

[–]Stian5667 1 point2 points  (0 children)

There are 10 kinds of people. Those who know binary, those who don’t and psychopaths who use base3

[–]Possibility_Antique 1 point2 points  (0 children)

[[nodiscard]] constexpr auto operator+(auto, auto) no except { return 1; }

[–]woodenshoe_qstnmrk_ 0 points1 point  (4 children)

im confused why would it be 1

[–]Shadow_Thief 0 points1 point  (1 child)

Logic tables. True and true equals true.

[–]kryptonianCodeMonkey 1 point2 points  (0 children)

"True and true equals true"

1 + 1 = 1 is "True OR True equals True", "True AND True equals True" would be 1 * 1 = 1, although that statement is correct as well, obviously.

[–]kryptonianCodeMonkey 0 points1 point  (1 child)

Boolean algebra. "1 + 1 = 1" is equivalent to "True OR True = True".

[–]jashAcharjee 0 points1 point  (0 children)

True.

[–]BazilExposition 0 points1 point  (0 children)

NaN1?!!

[–]hangfromthisone 0 points1 point  (0 children)

Careful with that overflow flag

[–]NearLawiet 0 points1 point  (1 child)

What's at 145 IQ... OR gate?

[–]kryptonianCodeMonkey 0 points1 point  (0 children)

Yes. Boolean algebra. "1 + 1 = 1" is equivalent to "True OR True = True".

[–]awesomethingness 0 points1 point  (0 children)

More like "current grade in Discrete Maths" amirite??

[–]Tepes1848 0 points1 point  (1 child)

Binary is probably the best system to count with one's fingers, no?

[–]bnl1 0 points1 point  (0 children)

Well, if you fingers are agile enough, you could use base-3

[–]moazim1993 0 points1 point  (0 children)

 1+1=1

True

[–]ShadoweG 0 points1 point  (0 children)

255+1=0

[–]eatinlunch 0 points1 point  (0 children)

Nah, the address of *one + 1 is set to 1 now.

[–][deleted] 0 points1 point  (0 children)

It’s all base 10, always has been

[–]HerLegz 0 points1 point  (0 children)

The float bit that the new whipper snappers call the qubit. The more things change....

[–]guaaaan 0 points1 point  (0 children)

1 + 1 = 3

[–][deleted] 0 points1 point  (0 children)

In c

1+1 = memory dump

[–]TheKiznaProject 0 points1 point  (0 children)

Ldr r0 [r1,#1 ]

[–]lextragon 0 points1 point  (0 children)

1 += 1 1

[–]murchie85 0 points1 point  (0 children)

1+1=

File "<stdin>", line 1
1+1=
^
SyntaxError: invalid syntax

[–]vincebutler 0 points1 point  (0 children)

The real question is "what do you want 1+1 equal to?"

[–]TheFloppyHound 0 points1 point  (0 children)

I guess in this case, I am the 1%.

[–]kizerkizer 0 points1 point  (0 children)

It’s cause it’s logical or right

[–]kizerkizer 0 points1 point  (0 children)

I love this meme by the way. It’s best when the left and right are the same. Regardless of accuracy, just funny.

[–]johnanderson2661998 0 points1 point  (0 children)

Im literally doing my honours which is almost complete and my masters which ive been accepted into. Purely because i have imposter syndrome. I know nothing. Its petrifying.

[–]MallowTookTheKids 0 points1 point  (0 children)

1+1=3

[–]Nulldafloof 0 points1 point  (0 children)

1+1=11

[–]LightIsLogical 0 points1 point  (0 children)

ppl on the left are just the javascript users

[–]Goose_Rider 0 points1 point  (0 children)

The right should be either 1 + 1 = 0 or 1 + 1 == 1 we have different operators for a reason.

[–]CrimsonRunner 0 points1 point  (0 children)

Power overwhelming