The Ethereum Virtual Machine acts as an intermediary between a nodes CPU and a smart contract. It can execute whatever is programmed into the contract using the network as a means of consensus and providing a virtual environment for decentralized execution.
The format of the instructions the EVM can read are EVM Bytecode.
The relationship between Solidity and Bytecode is that of an interpreter. Solidity is a readable language that will compile the code into Bytecode to execute in the EVM.
Bitcoin is not able to run complex programs like Ethereum as it is not Turing complete.
A Turing complete programming language would be solidity, python, javascript, etc. A language in which you can loop or program anything you can think of.