In this chapter, we introduce theories on data representation for flash memories. Flash memories are a milestone in the development of the data storage technology. The applications of flash memories have expanded widely in recent years, and flash memories have become the dominating member in the family of non-volatile memories. Compared to magnetic recording and optical recording, flash memories are more suitable for many mobile-, embeddedand mass-storage applications. The reasons include their high speed, physical robustness, and easy integration with circuits. The representation of data plays a key role in storage systems. Like magnetic recording and optical recording, flash memories have their own distinct properties, including block erasure, iterative cell programming, etc. These distinct properties introduce very interesting coding problems that address many aspects of a successful storage system, which include efficient data modification, error correction, and more. In this chapter, we first introduce the flash memory model, then study some newly developed codes, including codes for rewriting data and the rank modulation scheme. A main theme is understanding how to store information in a medium that has asymmetric properties when it transits between different states.