Memory cell can stores a multi-valued value more than a binary value in a single storage cell by changing the amount of electric charge to be stored. Data logic stores storage data, each digit of which is binary as a binary value in each memory cell for each digit. Furthermore, the data logic determines whether a read request for storage data is legal. If the read request is legal, the data logic relates the amount of electric charge stored in the memory cell to a binary value. If it is illegal, the data logic relates the amount of electric charge stored in the memory cell to the above-mentioned multi-valued value. Then, the data logic outputs data obtained by arraying the related values in each digit as the requested storage data.