how to use I2C and MPU6050?

Hey! I have an uno and a MPU6050. But I am new to I2C, so there are multiply things I don't understand. I found some sketches on Internet, but none of them really worked for me..

1, I ran I2C scanner sketch, and it shows address is 0x68. But each register also has an address, and from register map, 0x68 is signal path reset, so am I using the correct register map?

register map I refered:

2, in register map linked above, registers 36 - 53 and 99 - 102 are talking about slave 0 1 2 3 . Actually I have no idea what are these slave things. Are they something inside 6050, or external sensors connected to 6050 (6050 as the master?)

3, in the sketches from Internet, they use Wire.beginTransmission(0x69), they print only -1 in serial monitor. And when I change it into 0x68, monitor shows nothing..
so what is 0x69?

4, it seems this sensor is initially in sleep, so how do I wake it up?
in register 106, user control, I write 01000000,
in 107, power management 1, I write 10100101,
in 108, power management 2, I write 01000000, but I am not sure it is really working..

5, in some registers, some bits are reserved, so what value should I write for these bits?

6, I was trying to get raw data from a register of x-axis of gyro, here is my sketch:

I am really frustrated.
Any solution or comment will help me.
Thank you guys!!

#include <Wire.h>
// 0x68 from scnner
//Register 25 – Sample Rate Divider - SMPRT_DIV
//Register 27 – Gyroscope Configuration - GYRO_CONFIG
//Register 28 – Accelerometer Configuration - ACCEL_CONFIG
//Register 35 – FIFO Enable - FIFO_EN
//Register 106(6A) – User Control - USER_CTRL
//Register 107 (6B) – Power Management 1 - PWR_MGMT_1
//Register 108(6c) – Power Management 2 - PWR_MGMT_2
int address = 0x69;
int gx0 = 0x43;
int gx1 = 0x44;
void setup() {
Wire.begin();
Serial.begin(9600);

Wire.beginTransmission(0x69);
Wire.write(0x6B);
Wire.write(10100101);
Wire.endTransmission();

Wire.beginTransmission(0x69);
Wire.write(0x6C);
Wire.write(10000000);
Wire.endTransmission();

Wire.beginTransmission(0x69);
Wire.write(0x6A);
Wire.write(01000000);
Wire.endTransmission();

}
void loop() {
Wire.beginTransmission(address);
Wire.write(gx0);
Wire.endTransmission();

Wire.requestFrom(address,1);
if(Wire.available()<=1)
{
int c = Wire.read();
Serial.println(c);
delay(1000);
}
}

_6050_test_1.ino (1.03 KB)

if(Wire.available()<=1)

incorrect. Try

while !Wire.available() ; // just wait until there is something to read(

(.. but I'm sure THIS solves the problem.)