# BigInt - Büyük Sayı

**`BigInt`** veri tipi bir tamsayının sonuna **`n`** koyarak elde edilen değişkenlerin tipidir. Bu tip tamamen tamsayılardan oluşup genellikle **`number`** tipinin alabileceği **`Number.MAX_SAFE_INTEGER`** sayısı olan $$2^{53}-1$$ 'den pozitif olarak büyük, negatif olarak küçük tam sayıları ifade etmek için kullanılır.

{% code lineNumbers="true" %}

```javascript
let buyukSayi1 = 1n; 
let buyukSayi2 = -1n; 
alert(buyukSayi1); // 1 olarak çıktı verir.
alert(buyukSayi2); // -1 olarak çıktı verir.
alert(typeof buyukSayi1); //bigint olarak çıktı verir.
alert(typeof buyukSayi2); //bigint olarak çıktı verir.
```

{% endcode %}

**`BigInt`** veri tipinde değişkenler **`number`** tipinde değişkenlerle **matematiksel işlemlere sokulamazlar.** Sadece kendi aralarında işleme girerler. Bir **`number`** tipindeki değişkeni **`bigInt`** tipine çevirmek için **`BigInt()`** fonksiyonu kullanılır.

{% code lineNumbers="true" %}

```javascript
let maxTamSayi = BigInt( Number.MAX_SAFE_INTEGER );
let minTamSayi = BigInt( Number.MIN_SAFE_INTEGER );
alert(maxTamSayi + minTamSayi); // 0 çıktısı alınır.
alert(typeof (maxTamSayi + minTamSayi) ); //bigint çıktısı alınır.
```

{% endcode %}

**`BigInt`** veri tipiyle **`Math`** kütüphanesini kullanamazsınız. Bu kütüphane sadece **`number`** tipi içindir. **`BigInt`** sadece kendi aralarında matematiksel işlemlere sokulur. Bu sebeple bir **`bigInt`** veri tipini **`number`** tipine çevirerek işleme sokmak mümkün ama güvenli değildir. Çünkü tam olarak istediğiniz sayıya dönüşeceğinden emin olamazsınız.

{% code lineNumbers="true" %}

```javascript
let bigN = BigInt( Number.MAX_SAFE_INTEGER );
bigN = bigN * bigN * bigN; //kendisini küpüne eşitledik.
alert(bigN); // 730750818665451215712927172538123444058715062271
alert( Number(bigN) ); //7.307508186654512e+47
```

{% endcode %}

**`BigInt`** veri tipi tamsayı olduğu için bölümlerde ondalıklı sonuç bekleyemezsiniz.

{% code lineNumbers="true" %}

```javascript
alert( 5n / 2n ); //Sonuç 2n olarak çıkar ve 2 olarak çıktı verir.
```

{% endcode %}

Bu tip kriptolama işlemlerinde kullanılmazlar. Çünkü güvenli değildirler ve işlemcide eş zamanlı oluşturulmazlar.
