I've tried to find the answer through Google but I've come across conflicting uses of terminology, so I just wanted to be absolutely clear.
Here is my understanding: High level code written in a high level language (C I think is one of the lowest-level high level languages) gets translated to assembly code by that language's compiler.
That assembly code then gets translated to machine code (aka binary code aka hexadecimal code) by something (not sure what does this translation).
Does that mean that assembly code, but not machine code, is portable across computers? Or is assembly also not portable, and the only thing portable is code written in a high level language?