help me. Arduino with eeprom AT24c01

I connect Arduino with EEPROM AT24c01

program can write and read data at address 0x50. but if the address is converted into a 0x57 storage and pin connection A0, A1, A2 on removable AT24c01 (rated 1) when the process of reading data at address 0x57 is data that appears in the address 0x50.
I have replaced it with a new AT89c024 but the results remain the same.
please help me. sorry my bad english

#include <Wire.h>
byte alamat ;
//program write eeprom ;
byte dataku[16]={'A','B','C','D','E','F','A','B','Z','Z','Z','Z','Z','Z','Z','Z'};
void setup() 
{
  Wire.begin();
  Serial.begin(115200);
  add = 0x50;
}
 
void loop() 
{
  Serial.println("Write EEPROM");  
  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add); 
    Wire.send(i); 
    Wire.send(dataku[i]);
    Wire.endTransmission();
    delay(100);
  }
   Serial.println("end");
   delay(60000);

}
// program read eeprom
#include <Wire.h>
byte add ; 
byte r ;


void setup() 
{
  Wire.begin();
  Serial.begin(115200);
  
}


void loop() 
{
 
  Serial.println("Read data");
  for(int i = 0; i < 16; i++) 
  {
    Wire.beginTransmission(0x50); 
    Wire.send(i);
    Wire.endTransmission();

    Wire.requestFrom(0x50,1);
    r = Wire.receive(); 
    Serial.print(i);
    Serial.print(" - ");
    Serial.print(r,BYTE);
    Serial.print("\n");
    delay(200);
  }
  Serial.println("end"); 
  delay(3000);
  
}

the process of reading data at address 0x57 is data that appears in the address 0x50.

That's right, because changing the address of the chip does not change its size.
If you write 'A' into address 0 when the chip has address 0x50 and then read address 0 from the chip when it has address 0x57 you will get 'A'.
If you have more than one chip you can install them with addresses 0x50, 0x51, 0x52 and so on. Then if you write 'A' into chip 0x50 at address 0, that will not affect what is in address 0 in the chips at 0x51, 0x52 etc.

Pete

I try with 2 pieces at24c01, with address 0x50 and 0x51. address 0x50 stores the data {'1 ', '2', '3 ', '4', 'A', 'B', 'C', 'D', '0 ', '0', '0 ',' 0 ', '0', '0 ', '0', '0 '}; and address 0x51 {' A ',' B ',' C ',' D ',' E ',' F ',' A ',' B ',' Z ',' Z ',' Z ',' Z ',' Z ',' Z ',' Z ',' Z '};
but when the data read address 0x50, A, B, C, D, E, F, A, B, Z, Z, Z, Z, Z, Z, Z, Z. 0x51 address it blank. why?
I use a pull up resistor 10 K on the SDA and SCL

#include <Wire.h>
byte add1; byte add2;
byte dataku1[16] ={'1','2','3','4','A','B','C','D', '0','0','0','0','0','0','0','0'};
byte dataku2[16]={'A','B','C','D','E','F','A','B','Z','Z','Z','Z','Z','Z','Z','Z'};
void setup() 
{
  Wire.begin();
  Serial.begin(115200);
  add1 = 0x50;
  add2 = 0x51;
}
 
void loop() 
{
  Serial.println("Write EEPROM 1");  
  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add1); 
    Wire.send(i); 
    Wire.send(dataku1[i]);
    Wire.endTransmission();
    delay(100);
  }
  
  Serial.println("Write EEPROM 2");  
  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add1); 
    Wire.send(i); 
    Wire.send(dataku2[i]);
    Wire.endTransmission();
    delay(100);
  }
  
   Serial.println("end");
   delay(60000);

}

[code]
#include <Wire.h>
byte add ; 
byte r ;


void setup() 
{
  Wire.begin();
  Serial.begin(115200);
  
}


void loop() 
{
 
  Serial.println("Read EEPRON 1 ");
  for(int i = 0; i < 16; i++) 
  {
    Wire.beginTransmission(0x50); 
    Wire.send(i);
    Wire.endTransmission();

    Wire.requestFrom(0x50,1);
    r = Wire.receive(); 
    Serial.print(i);
    Serial.print(" - ");
    Serial.print(r,BYTE);
    Serial.print("\n");
    delay(100);
  }
  
  Serial.println("Read EEPRON 2 ");
  for(int i = 0; i < 16; i++) 
  {
    Wire.beginTransmission(0x51); 
    Wire.send(i);
    Wire.endTransmission();

    Wire.requestFrom(0x51,1);
    r = Wire.receive(); 
    Serial.print(i);
    Serial.print(" - ");
    Serial.print(r,BYTE);
    Serial.print("\n");
    delay(100);
  }
  
  Serial.println("end"); 
  delay(60000);
  
}

[/code]

Youare writing to add1 in both loops of your code, so the second loop overwrites the contents written by the first loop and the second address will be blank. Try altering your code to

  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add1); 
    Wire.send(i); 
    Wire.send(dataku1[i]);
    Wire.endTransmission();
    delay(100);
  }
  
  Serial.println("Write EEPROM 2");  
  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add2);    //Previously add1
    Wire.send(i); 
    Wire.send(dataku2[i]);
    Wire.endTransmission();
    delay(100);
for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add1); 
    Wire.send(i); 
    Wire.send(dataku1[i]);
    Wire.endTransmission();
    delay(100);
  }
  
  Serial.println("Write EEPROM 2");  
  for(int i = 0; i < 16; i++)
  {
    Wire.beginTransmission(add2);    //Previously add1
    Wire.send(i); 
    Wire.send(dataku2[i]);
    Wire.endTransmission();
    delay(100);

I have changed a add1 add2. content EEPROM1 0x50 '1 ', '2', '3 ', '4', 'A', 'B', 'C', 'D', '0 ', '0', '0 ',' 0 ', '0 ', '0', '0 ', '0'. 0x51 EEPROM2 contents empty / blank. I do not understand why this happens? I beg your help to explain it.