We know machine level code are in form of 0,1 (binary). Now, in c programming using gcc for a program if cmd is -
gcc -c ok.c
where ok.c is a simple program to print "hi" in c.Now, a file ok.o is created which is supposed to be machine level instructions.The content of ok.o file is something like-
^@^L^@UH��H�=^@^@^@^@�^@^@^@^@�^@^@^@^@�]�hi^@^@GCC: (Debian 9.3.0-10) 9.3.0^@^@^@^@^@^@^@^@^T^@^@^@^@^@^@^@^AzR^@^Ax^P^A^[^L^G^H�^A^@^@^\^@^@^@^\^@^@^@^@^@^@^@^X^@^@^@^@A^N^P�^BC^FS^L^G^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^D^@��^@^@^@^@^@^@^@^@^@^
and so on lots of character like this. what does this output mean and if this is machine level instruction then why it is not in form of binary digit(0,1) i.e 1000110111111010101....(something like that) and also how can i see binary kind of code ? Please , also correct me if I am wrong somewhere.Thanks