# Can I teach my brain to understand binary?

The question is if I could teach my brain to understand binary codes (for example, ASCII) just like I teach it to understand English, French or any other language.

That includes:

• not to translate it each time I read some binaries, like 01100001 01100010 automatically reads 'ab'.
• understand both written, pronounced and somehow sound-coded form (like Morse)
• write and say it naturally

The idea is not to teach computer speak to people, but to teach people speak to a computer in his language. In general, human brain can be taught anything. It is a programmable computer. However, you can only program it very slow. If you can teach your subconscious to multiply numbers, why can't you teach it to encode MD5? Or decoding HTTPS data given a key? Even bruteforce?

So the question is if there are any researches on the topic, or the people who tried such learning? Are there any techniques? Also, what if we teach a 2-year old child this language, will it be natural for him just like the English is natural for English-grown child?

P.S. Some upgrade of this idea is to place some radiowaves-to-soundwaves direct converters and "listen" to the radiosignals around you. Somehow "spy" on neighbours Wi-Fi.

P.P.S. I've asked this questions on datascience stackexchange, and the community suggested moving it here. However, it is also moved to lifehacks, where I received a few answers: https://lifehacks.stackexchange.com/questions/7575/can-i-teach-my-brain-to-undersrand-binary/

• Yes i can read write and do complex math in binary in my head as well as convert to hexidecimal. The problem is it cant really come from being taught its something you have to learn on your own. – user13137 Jul 10 '16 at 21:53
• (I'm a computer science student) There's no point, for that we invented assembly and then C like languages and then all the others, it's easier to think in words and understand things like: for(i=0;i<n;i++){...} instead of writing the 4-6 commands that does this in assembly or even more characters that tell this to the CPU. Also, the CPU commands will be different for each CPU, but in C or other languages, the commands will stay the same. In short, it goes against everything we learn on how to program. – shinzou Jul 11 '16 at 9:04
• @kuhaku well, the point is simple, as I mention in the post, e.g. decode MD5 on-the-fly or listen to internet traffic using headphones and radio – caffeinum Jul 11 '16 at 9:50
• MD5 isn't one to one, meaning there are many possibilities for a hash code to decode to. Internet traffic, even if you will understand binary, you'll still have to know the protocol to understand the segment (a segment is what holds the protocol information and the data, the data can hold a higher layer protocol too). There's a software that does this and can interpret popular protocols and how they're packaged in the segment and their data called Wireshark. – shinzou Jul 11 '16 at 10:07
• @kuhaku well, I know these facts pretty well, as soon as I am STEM student myself. However, I am not neurobiologist, so I can't tell what are the limitations of the human brain. I believe that there are pretty no limits to what a brain can learn. – caffeinum Jul 11 '16 at 10:36

Can I interpret your question as "Can a human brain perform complex computational tasks, like encode MD5, on par with a computer?"? To answer that question, I'm going to have to say no, that's why we invented computers in the first place.

But, I think you're asking the question from more of a human performance standpoint, rather than strictly a language or computer science standpoint. You said in your comment, "I believe that there are pretty no limits to what a brain can learn". That's a fantastic attitude, but sadly, it's simply not true. It is true that you can study and try to learn anything, but everyone's performance is going to be limited individually. Some people may master something and others may struggle, given the same amount of time to practice.

The brain is mysterious, but we do know that our thoughts and movements are controlled by neurons firing. The brain adapts the firing patterns of the neurons in order for us to "learn". More neurons doesn't necessarily imply better performance or learning ability.

I would say that a fixed number of neurons being present in the brain at any one moment, combined with the fact that it takes some amount of time for a neuron to fire and react, would suggest there is a hard cap on a persons processing power at any one time. A person can't immediately become better with the resources they have.

Genes, diet, and other factors would affect a persons biological ability to grow new, well-functioning neurons, and their ability for their brain to "tune" existing neurons in order to learn. General health would affect this, and since a person can't be "unlimitedly healthy", it follows that there is some limit on the person's ability to create and "tune" neurons. A person can't unlimitedly increase their resources.

These two points suggest that our performance ability is ultimately limited by time, and I think there is simply not enough time to learn to speak binary at a fast enough and large enough scale to be useful EG listening to wifi. And if you consider today's data rates, 100MB/s just as an example, this would probably be beyond our ears' sensory perception capabilities anyways. I believe there are studies on the "rate" at which we can perceive sensory stimuli.

To provide another example to consider, I'm thinking about weightlifting, since the world deadlift record was just broken at 500kg. There's no "limit" on how much weight a person can lift, but there is certainly a limit to the rate at which you can train your body, and a limit on the amount of time you have to do it.

So in order to learn to decode HTTPS naturally in your brain, you would simply need to make exponential gains in your brains biological/physical ability to process and compute. There's no reason you can't, but we haven't figured out how to do that yet. Simply spending all of your time trying to learn it would certainly get you somewhere, but certainly not enough to "speak HTTPS".

• Eat well and visit your therapist regularly. Also, make sure your parents' genes are good enough. And after lifetime-long training you will be able to read HTTPS! Or one billion of lifetime spans. – caffeinum Jul 12 '16 at 13:41
• Well, being serious: that's pretty what I wanted to hear. Could have come to this myself, but somehow didn't think about this in such projection. Sadly, it breaks the magic a bit. A magic of "be able to learn anything". However, I hope, that's still true for a humanity, not an individual. So that humanity over time should improve enough that people will be able to learn anything. – caffeinum Jul 12 '16 at 13:43
• Well, to make a counter argument about "learning anything", HTTPS is something that we just kinda made up, so even if we were able to learn to speak HTTPS fluently, then we could just create a new harder problem that would be too hard to solve at first. That's what makes computer science truly so amazing is that we really are solving problems beyond human ability. – parker.sikand Jul 15 '16 at 6:55
• Your question reminded me of a thought I had one time about using genetic engineering to grow a living brain, not an organism, but just the brain in order to use it as kind of a biological computer. – parker.sikand Jul 15 '16 at 6:57

Quite a bit of foundational research on skill acquisition is on how people learn to send and receive morse code. I'm no expert at morse code but it seems like it shares quite a bit with binary.

For example, here is a graph of letters per minute that an operator could receive as a function of weeks of practice (Bryan & Harter, 1897).

A general principle is that gradually people move from identifying letters to seeing larger patterns like words and phrases.

Reading is a little different to receiving information aurally. But I imagine some similar principles would apply. If anything, I imagine that ability to recognise patterns visually would make the task of reading binary easier. That said, binary does seem far from optimal as a system for encoding letters in terms of efficient visual processing.

Bryan, W. L., & Harter, N. (1899). Studies on the telegraphic language: The acquisition of a hierarchy of habits. Psychological Review, 6(4), 345.

If you look at ancient form of writing called cuneiform, that is as close to binary code as you can get. People did learn to read/write it in ancient times, but from my understanding it was so hard that it required years of training.

In terms of teaching people to "speak computer" - this is very far off mark, computer programs are extremely long and complicated sequences of characters. For example something like "print the word loop 10 times", expressed as:

 for(int i = 0; i< 10; i++)
{
printf("loop");
}


gets translated into assembly language, where the program will move different numbers to different registers, and then those instructions are translated into binary. The number of intermediate steps is very large, and the resulting sequence of binary would be meaningless, unless you know assembly language.

For example:

• How is cuneiform like binary, exactly? Pretty sure that's straight out of a certain science fiction novel. ;) – Christian Hummeluhr Jul 9 '15 at 6:43
• I'm saying it's visually very close to binary - just a series of marks and empty spaces. – Alex Stone Jul 10 '15 at 17:25

It is absolutely possible but it would be a step backwards. In the early days of computing, punched cards and punched tape were used for input and output. They contained binary in the form of punched holes.

It was well known that many individuals could read directly from the tape. Here is an old picture of just that. http://i2.cdn.turner.com/cnnnext/dam/assets/121121034453-witch-computer-restoration-uk-story-top.jpg

In case the link fails, you can find it yourself by Googling "61-year-old computer springs back to life" By John D. Sutter, CNN

The problem is that programs written directly in machine code have to be documented by hand and are very difficult to maintain. This is the whole reason that high-level computer programming languages were developed.

I can say from personal experience that I can look at many binary numbers and instantly recognise them both as numbers and as ASCII but I would have no desire to improve this skill any further.

Incidentally it is also possible to 'read' binary by listening to it. In the days of the ZX-Spectrum, programs were stored on audio-tape and certain patterns were very recognisable when played back as sound. It would certainly be possible to acquire this skill to a very high degree if it was taught early enough to a child but again, I don't think it would be very useful. Machines can do it so much better.