Search code examples
encodingbinary

Difference between machine language, binary code and a binary file


I'm studying programming and in many sources I see the concepts: "machine language", "binary code" and "binary file". The distinction between these three is unclear to me, because according to my understanding machine language means the raw language that a computer can understand i.e. sequences of 0s and 1s.

Now if machine language is a sequence of 0s and 1s and binary code is also a sequence of 0s and 1s then does machine language = binary code?

What about binary file? What really is a binary file? To me the word "binary file" means a file, which consists of binary code. So for example, if my file was:

010010101010010
010010100110100
010101100111010
010101010101011
010101010100101
010101010010111

Would this be a binary file? If I google binary file and see Wikipedia I see this example picture of binary file which confuses me (it's not in binary?....)

Hex image

Where is my confusion happening? Am I mixing file encoding here or what? If I were to ask one to SHOW me what is machine language, binary code and binary file, what would they be? =) I guess the distinction is too abstract to me.

Thnx for any help! =)

UPDATE:

In Python for example, there is one phrase in a file I/O tutorial, which I don't understand: Opens a file for reading only in binary format. What does reading a file in binary format mean?


Solution

  • Machine code and binary are the same - a number system with base 2 - either a 1 or 0. But machine code can also be expressed in hex-format (hexadecimal) - a number system with base 16. The binary system and hex are very interrelated with each other, its easy to convert from binary to hex and convert back from hex to binary. And because hex is much more readable and useful than binary - it's often used and shown. For instance in the picture above in your question -uses hex-numbers!

    Let say you have the binary sequence 1001111000001010 - it can easily be converted to hex by grouping in blocks - each block consisting of four bits.

     1001 1110 0000 1010 => 9  14 0 10 which in hex becomes: 9E0A. 
    

    One can agree that 9E0A is much more readable than the binary - and hex is what you see in the image.