How do I give an I2C device an address?

Does one assign a device an address

the device manufactuers assign the addresses.

If you code your own slave, you can make it whatever you want.