exploit paylaşım grubumuz: t.me/HTTPwnn

Mala anlatır gibi C (seri 2#) (Değişkenler ve Veri Tipleri Bellek Mantığı.)

Katılım
16 Haz 2026
Mesaj
111
Reaksiyon
83
xentr_thread_starter

Değişkenler, Veri Tipleri ve Bellek Mantığı​

Birçok kişi C öğrenmeye başladığında değişkenleri sadece:


int sayi = 5;

olarak görür.
Ancak gerçekte işler bundan çok daha farklıdır.
Bu bölümde değişkenlerin gerçekten ne olduğunu, RAM içerisinde nasıl tutulduğunu ve veri tiplerinin neden var olduğunu öğreneceğiz.

Bilgisayar Verileri Nerede Saklar?​

Bir program çalıştırıldığında veriler bilgisayarın RAM'ine yüklenir.
RAM'i devasa bir depo gibi düşünebiliriz.
Örnek:


Kod:
------------------------------------------------
| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 |
------------------------------------------------

Her kutunun bir adresi vardır.
Tıpkı ev adresleri gibi.
Bir değişken oluşturduğumuzda işletim sistemi RAM'de ona yer ayırır.
Örneğin:


int yas = 20;

Yazdığımızda RAM'de şuna benzer bir durum oluşur:


Kod:
Adres      Değer

1000       20
1001
1002
1003

Gerçekte adresler çok daha uzundur:


0x7ffeab123450

Ancak mantık aynıdır.

Değişken Nedir?​

Değişken:
Bellekteki bir alanın insanlar tarafından okunabilir ismidir.
Örneğin:


int yas = 20;

Burada:


yas

bir isimdir.
Bilgisayar aslında "yas" kelimesini kullanmaz.
Bilgisayarın gördüğü şey:


Kod:
Adres: 0x7ffeab123450
Değer: 20

şeklindedir.

Veri Tipleri Neden Var?​

Bilgisayar ne kadar yer ayıracağını bilmek zorundadır.
Örnek:
Bir harf saklamak istiyoruz.


'A'

Bir de:


5000000

saklamak istiyoruz.
Bu iki veri aynı büyüklükte değildir.
Bu yüzden veri tipleri vardır.

char Veri Tipi​

Tek karakter tutar.


char harf = 'A';

Bellekte:


A

olarak değil:


65

olarak tutulur.
Çünkü bilgisayar karakterleri ASCII tablosu ile saklar.
Örnek:


Kod:
A = 65
B = 66
C = 67
a = 97
b = 98

Kontrol edelim:


Kod:
char harf = 'A';

printf("%d", harf);

Çıktı:


65


ASCII Tablosu Nedir?​

ASCII karakterlerin sayısal karşılıklarıdır.
Örnek:


Kod:
Karakter     Sayı

A            65
B            66
C            67
D            68

Bu yüzden:


Kod:
char x = 65;
printf("%c", x);

çıktısı:


A

olacaktır.

int Veri Tipi​

Tam sayıları saklar.
Örnek:


int yas = 20;



int puan = 150;



int para = 100000;


int Kaç Byte Yer Kaplar?​

Modern sistemlerde genellikle:


4 byte

yer kaplar.
Kontrol edelim:


Kod:
#include <stdio.h>

int main()
{
    printf("%zu", sizeof(int));
}

Çıktı:


4

olacaktır.

Byte Nedir?​

Bilgisayarın temel veri birimidir.


1 byte = 8 bit

Örnek:


00000000

8 adet bit vardır.
Bu:


1 byte

eder.

Bit Nedir?​

Bilgisayarın anlayabildiği en küçük veri birimidir.
Sadece:


0

veya


1

olabilir.
Örnek:


10101010

8 bit = 1 byte

4 Byte Kaç Bit Eder?​



4 × 8 = 32 bit

Yani:


int

çoğu sistemde:


32 bit

yer kaplar.

float Veri Tipi​

Ondalıklı sayılar için kullanılır.
Örnek:


float not = 85.75;



float sicaklik = 36.6;


float Bellekte Nasıl Saklanır?​

Birçok kişi şöyle saklandığını sanır:


36.6

Hayır.
Bilgisayar bunu IEEE 754 standardına göre saklar.
Örneğin:


36.6

arka planda yaklaşık olarak:


01000010000100100110011001100110

gibi tutulur.
Bu yüzden bazı ondalıklı işlemlerde hata oluşabilir.
Örnek:


Kod:
float x = 0.1;
float y = 0.2;

printf("%f", x + y);

Bazen:


0.300000

yerine


0.30000004

gibi sonuçlar görebiliriz.

double Veri Tipi​

Daha hassas ondalıklı sayılar için kullanılır.


double pi = 3.141592653589793;

Genellikle:


8 byte

yer kaplar.
Kontrol:


printf("%zu", sizeof(double));

Sonuç:


8


Veri Tiplerinin Boyutları​

Tipik bir 64 bit sistemde:
Veri TipiBoyut
char1 byte
short2 byte
int4 byte
float4 byte
long8 byte
double8 byte

sizeof Operatörü​

Bir değişkenin bellekte ne kadar yer kapladığını gösterir.
Örnek:


Kod:
int sayi;

printf("%zu", sizeof(sayi));

Sonuç:


4


signed ve unsigned​

Normalde:


int

hem negatif hem pozitif saklar.
Örnek:


int x = -10;

Ama:


unsigned int x;

sadece pozitif sayı saklar.
Örnek:


Kod:
0
1
2
3
...


signed ve unsigned Neden Var?​

Bellek kullanımını daha verimli yapmak için.
Örneğin:


8 bit

bir alanımız olsun.
signed:


-128 ile 127

arası saklar.
unsigned:


0 ile 255

arası saklar.

Tür Dönüşümü (Casting)​

Bazen veri tipini değiştirmek isteriz.
Örnek:


Kod:
float x = 10.8;

int y = (int)x;

Sonuç:


10

olur.
Ondalık kısım atılır.

Otomatik Tür Dönüşümü​

Örnek:


Kod:
int a = 5;
float b = 2.5;

float sonuc = a + b;

Burada:


a

otomatik olarak:


5.0

haline çevrilir.
Sonuç:


7.5

olur.

Bellekte Gerçekten Ne Oluyor?​

Örnek:


Kod:
int a = 10;
int b = 20;

RAM:


Kod:
Adres      Değer

1000       10
1004       20

şeklinde olabilir.
Dikkat:


Kod:
1000
1004

arasında 4 fark vardır.
Çünkü:


int

4 byte yer kaplar.

Bellek İsrafı Örneği​

Kullanıcı yaşı tutacak.
Maksimum:


150

olsun.
Şunu yapmak mantıksızdır:


int yas = 20;

Çünkü:


4 byte

yer kaplar.
Bunun yerine:


unsigned char yas = 20;

kullanılabilir.
Bu:


1 byte

kaplar.
Büyük projelerde bu optimizasyonlar ciddi önem kazanır.

Stack Kavramına Giriş​

Bir fonksiyon içinde oluşturulan değişkenler genellikle Stack bölgesine yazılır.
Örnek:


Kod:
int main()
{
    int a = 10;
    int b = 20;
}

Çalışırken:


Kod:
STACK

---------
| b=20 |
---------
| a=10 |
---------

şeklinde saklanabilir.
Fonksiyon bittiğinde:


STACK TEMİZLENİR

ve değişkenler yok olur.
Bu konu ileride Pointer ve Bellek Yönetimi bölümünde çok daha kritik hale gelecek.

Bölüm Özeti​

Bu bölümde:
✅ RAM'in temel mantığını
✅ Değişkenlerin gerçekte ne olduğunu
✅ Veri tiplerini
✅ Byte ve Bit kavramlarını
✅ sizeof kullanımını
✅ signed ve unsigned yapılarını
✅ Tür dönüşümlerini
✅ Stack mantığının temelini
öğrendik.

Bir sonraki seride Operatörler ve Bilgisayarın Matematiksel İşlemleri Nasıl Gerçekleştirdiği konusuna geçeceğiz. Orada sadece + - * / değil, mantıksal operatörler, bit düzeyinde işlemler ve programlama mantığının temel karar mekanizmalarını detaylı şekilde inceleyeceğiz. 🚀
 

Değişkenler, Veri Tipleri ve Bellek Mantığı​

Birçok kişi C öğrenmeye başladığında değişkenleri sadece:


int sayi = 5;

olarak görür.
Ancak gerçekte işler bundan çok daha farklıdır.
Bu bölümde değişkenlerin gerçekten ne olduğunu, RAM içerisinde nasıl tutulduğunu ve veri tiplerinin neden var olduğunu öğreneceğiz.

Bilgisayar Verileri Nerede Saklar?​

Bir program çalıştırıldığında veriler bilgisayarın RAM'ine yüklenir.
RAM'i devasa bir depo gibi düşünebiliriz.
Örnek:


Kod:
------------------------------------------------
| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 |
------------------------------------------------

Her kutunun bir adresi vardır.
Tıpkı ev adresleri gibi.
Bir değişken oluşturduğumuzda işletim sistemi RAM'de ona yer ayırır.
Örneğin:


int yas = 20;

Yazdığımızda RAM'de şuna benzer bir durum oluşur:


Kod:
Adres      Değer

1000       20
1001
1002
1003

Gerçekte adresler çok daha uzundur:


0x7ffeab123450

Ancak mantık aynıdır.

Değişken Nedir?​

Değişken:

Örneğin:


int yas = 20;

Burada:


yas

bir isimdir.
Bilgisayar aslında "yas" kelimesini kullanmaz.
Bilgisayarın gördüğü şey:


Kod:
Adres: 0x7ffeab123450
Değer: 20

şeklindedir.

Veri Tipleri Neden Var?​

Bilgisayar ne kadar yer ayıracağını bilmek zorundadır.
Örnek:
Bir harf saklamak istiyoruz.


'A'

Bir de:


5000000

saklamak istiyoruz.
Bu iki veri aynı büyüklükte değildir.
Bu yüzden veri tipleri vardır.

char Veri Tipi​

Tek karakter tutar.


char harf = 'A';

Bellekte:


A

olarak değil:


65

olarak tutulur.
Çünkü bilgisayar karakterleri ASCII tablosu ile saklar.
Örnek:


Kod:
A = 65
B = 66
C = 67
a = 97
b = 98

Kontrol edelim:


Kod:
char harf = 'A';

printf("%d", harf);

Çıktı:


65


ASCII Tablosu Nedir?​

ASCII karakterlerin sayısal karşılıklarıdır.
Örnek:


Kod:
Karakter     Sayı

A            65
B            66
C            67
D            68

Bu yüzden:


Kod:
char x = 65;
printf("%c", x);

çıktısı:


A

olacaktır.

int Veri Tipi​

Tam sayıları saklar.
Örnek:


int yas = 20;



int puan = 150;



int para = 100000;


int Kaç Byte Yer Kaplar?​

Modern sistemlerde genellikle:


4 byte

yer kaplar.
Kontrol edelim:


Kod:
#include <stdio.h>

int main()
{
    printf("%zu", sizeof(int));
}

Çıktı:


4

olacaktır.

Byte Nedir?​

Bilgisayarın temel veri birimidir.


1 byte = 8 bit

Örnek:


00000000

8 adet bit vardır.
Bu:


1 byte

eder.

Bit Nedir?​

Bilgisayarın anlayabildiği en küçük veri birimidir.
Sadece:


0

veya


1

olabilir.
Örnek:


10101010

8 bit = 1 byte

4 Byte Kaç Bit Eder?​



4 × 8 = 32 bit

Yani:


int

çoğu sistemde:


32 bit

yer kaplar.

float Veri Tipi​

Ondalıklı sayılar için kullanılır.
Örnek:


float not = 85.75;



float sicaklik = 36.6;


float Bellekte Nasıl Saklanır?​

Birçok kişi şöyle saklandığını sanır:


36.6

Hayır.
Bilgisayar bunu IEEE 754 standardına göre saklar.
Örneğin:


36.6

arka planda yaklaşık olarak:


01000010000100100110011001100110

gibi tutulur.
Bu yüzden bazı ondalıklı işlemlerde hata oluşabilir.
Örnek:


Kod:
float x = 0.1;
float y = 0.2;

printf("%f", x + y);

Bazen:


0.300000

yerine


0.30000004

gibi sonuçlar görebiliriz.

double Veri Tipi​

Daha hassas ondalıklı sayılar için kullanılır.


double pi = 3.141592653589793;

Genellikle:


8 byte

yer kaplar.
Kontrol:


printf("%zu", sizeof(double));

Sonuç:


8


Veri Tiplerinin Boyutları​

Tipik bir 64 bit sistemde:
Veri TipiBoyut
char1 byte
short2 byte
int4 byte
float4 byte
long8 byte
double8 byte

sizeof Operatörü​

Bir değişkenin bellekte ne kadar yer kapladığını gösterir.
Örnek:


Kod:
int sayi;

printf("%zu", sizeof(sayi));

Sonuç:


4


signed ve unsigned​

Normalde:


int

hem negatif hem pozitif saklar.
Örnek:


int x = -10;

Ama:


unsigned int x;

sadece pozitif sayı saklar.
Örnek:


Kod:
0
1
2
3
...


signed ve unsigned Neden Var?​

Bellek kullanımını daha verimli yapmak için.
Örneğin:


8 bit

bir alanımız olsun.
signed:


-128 ile 127

arası saklar.
unsigned:


0 ile 255

arası saklar.

Tür Dönüşümü (Casting)​

Bazen veri tipini değiştirmek isteriz.
Örnek:


Kod:
float x = 10.8;

int y = (int)x;

Sonuç:


10

olur.
Ondalık kısım atılır.

Otomatik Tür Dönüşümü​

Örnek:


Kod:
int a = 5;
float b = 2.5;

float sonuc = a + b;

Burada:


a

otomatik olarak:


5.0

haline çevrilir.
Sonuç:


7.5

olur.

Bellekte Gerçekten Ne Oluyor?​

Örnek:


Kod:
int a = 10;
int b = 20;

RAM:


Kod:
Adres      Değer

1000       10
1004       20

şeklinde olabilir.
Dikkat:


Kod:
1000
1004

arasında 4 fark vardır.
Çünkü:


int

4 byte yer kaplar.

Bellek İsrafı Örneği​

Kullanıcı yaşı tutacak.
Maksimum:


150

olsun.
Şunu yapmak mantıksızdır:


int yas = 20;

Çünkü:


4 byte

yer kaplar.
Bunun yerine:


unsigned char yas = 20;

kullanılabilir.
Bu:


1 byte

kaplar.
Büyük projelerde bu optimizasyonlar ciddi önem kazanır.

Stack Kavramına Giriş​

Bir fonksiyon içinde oluşturulan değişkenler genellikle Stack bölgesine yazılır.
Örnek:


Kod:
int main()
{
    int a = 10;
    int b = 20;
}

Çalışırken:


Kod:
STACK

---------
| b=20 |
---------
| a=10 |
---------

şeklinde saklanabilir.
Fonksiyon bittiğinde:


STACK TEMİZLENİR

ve değişkenler yok olur.
Bu konu ileride Pointer ve Bellek Yönetimi bölümünde çok daha kritik hale gelecek.

Bölüm Özeti​

Bu bölümde:
✅ RAM'in temel mantığını
✅ Değişkenlerin gerçekte ne olduğunu
✅ Veri tiplerini
✅ Byte ve Bit kavramlarını
✅ sizeof kullanımını
✅ signed ve unsigned yapılarını
✅ Tür dönüşümlerini
✅ Stack mantığının temelini
öğrendik.

Bir sonraki seride Operatörler ve Bilgisayarın Matematiksel İşlemleri Nasıl Gerçekleştirdiği konusuna geçeceğiz. Orada sadece + - * / değil, mantıksal operatörler, bit düzeyinde işlemler ve programlama mantığının temel karar mekanizmalarını detaylı şekilde inceleyeceğiz. 🚀
E.s güzel seri
 

Değişkenler, Veri Tipleri ve Bellek Mantığı​

Birçok kişi C öğrenmeye başladığında değişkenleri sadece:


int sayi = 5;

olarak görür.
Ancak gerçekte işler bundan çok daha farklıdır.
Bu bölümde değişkenlerin gerçekten ne olduğunu, RAM içerisinde nasıl tutulduğunu ve veri tiplerinin neden var olduğunu öğreneceğiz.

Bilgisayar Verileri Nerede Saklar?​

Bir program çalıştırıldığında veriler bilgisayarın RAM'ine yüklenir.
RAM'i devasa bir depo gibi düşünebiliriz.
Örnek:


Kod:
------------------------------------------------
| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 |
------------------------------------------------

Her kutunun bir adresi vardır.
Tıpkı ev adresleri gibi.
Bir değişken oluşturduğumuzda işletim sistemi RAM'de ona yer ayırır.
Örneğin:


int yas = 20;

Yazdığımızda RAM'de şuna benzer bir durum oluşur:


Kod:
Adres      Değer

1000       20
1001
1002
1003

Gerçekte adresler çok daha uzundur:


0x7ffeab123450

Ancak mantık aynıdır.

Değişken Nedir?​

Değişken:

Örneğin:


int yas = 20;

Burada:


yas

bir isimdir.
Bilgisayar aslında "yas" kelimesini kullanmaz.
Bilgisayarın gördüğü şey:


Kod:
Adres: 0x7ffeab123450
Değer: 20

şeklindedir.

Veri Tipleri Neden Var?​

Bilgisayar ne kadar yer ayıracağını bilmek zorundadır.
Örnek:
Bir harf saklamak istiyoruz.


'A'

Bir de:


5000000

saklamak istiyoruz.
Bu iki veri aynı büyüklükte değildir.
Bu yüzden veri tipleri vardır.

char Veri Tipi​

Tek karakter tutar.


char harf = 'A';

Bellekte:


A

olarak değil:


65

olarak tutulur.
Çünkü bilgisayar karakterleri ASCII tablosu ile saklar.
Örnek:


Kod:
A = 65
B = 66
C = 67
a = 97
b = 98

Kontrol edelim:


Kod:
char harf = 'A';

printf("%d", harf);

Çıktı:


65


ASCII Tablosu Nedir?​

ASCII karakterlerin sayısal karşılıklarıdır.
Örnek:


Kod:
Karakter     Sayı

A            65
B            66
C            67
D            68

Bu yüzden:


Kod:
char x = 65;
printf("%c", x);

çıktısı:


A

olacaktır.

int Veri Tipi​

Tam sayıları saklar.
Örnek:


int yas = 20;



int puan = 150;



int para = 100000;


int Kaç Byte Yer Kaplar?​

Modern sistemlerde genellikle:


4 byte

yer kaplar.
Kontrol edelim:


Kod:
#include <stdio.h>

int main()
{
    printf("%zu", sizeof(int));
}

Çıktı:


4

olacaktır.

Byte Nedir?​

Bilgisayarın temel veri birimidir.


1 byte = 8 bit

Örnek:


00000000

8 adet bit vardır.
Bu:


1 byte

eder.

Bit Nedir?​

Bilgisayarın anlayabildiği en küçük veri birimidir.
Sadece:


0

veya


1

olabilir.
Örnek:


10101010

8 bit = 1 byte

4 Byte Kaç Bit Eder?​



4 × 8 = 32 bit

Yani:


int

çoğu sistemde:


32 bit

yer kaplar.

float Veri Tipi​

Ondalıklı sayılar için kullanılır.
Örnek:


float not = 85.75;



float sicaklik = 36.6;


float Bellekte Nasıl Saklanır?​

Birçok kişi şöyle saklandığını sanır:


36.6

Hayır.
Bilgisayar bunu IEEE 754 standardına göre saklar.
Örneğin:


36.6

arka planda yaklaşık olarak:


01000010000100100110011001100110

gibi tutulur.
Bu yüzden bazı ondalıklı işlemlerde hata oluşabilir.
Örnek:


Kod:
float x = 0.1;
float y = 0.2;

printf("%f", x + y);

Bazen:


0.300000

yerine


0.30000004

gibi sonuçlar görebiliriz.

double Veri Tipi​

Daha hassas ondalıklı sayılar için kullanılır.


double pi = 3.141592653589793;

Genellikle:


8 byte

yer kaplar.
Kontrol:


printf("%zu", sizeof(double));

Sonuç:


8


Veri Tiplerinin Boyutları​

Tipik bir 64 bit sistemde:
Veri TipiBoyut
char1 byte
short2 byte
int4 byte
float4 byte
long8 byte
double8 byte

sizeof Operatörü​

Bir değişkenin bellekte ne kadar yer kapladığını gösterir.
Örnek:


Kod:
int sayi;

printf("%zu", sizeof(sayi));

Sonuç:


4


signed ve unsigned​

Normalde:


int

hem negatif hem pozitif saklar.
Örnek:


int x = -10;

Ama:


unsigned int x;

sadece pozitif sayı saklar.
Örnek:


Kod:
0
1
2
3
...


signed ve unsigned Neden Var?​

Bellek kullanımını daha verimli yapmak için.
Örneğin:


8 bit

bir alanımız olsun.
signed:


-128 ile 127

arası saklar.
unsigned:


0 ile 255

arası saklar.

Tür Dönüşümü (Casting)​

Bazen veri tipini değiştirmek isteriz.
Örnek:


Kod:
float x = 10.8;

int y = (int)x;

Sonuç:


10

olur.
Ondalık kısım atılır.

Otomatik Tür Dönüşümü​

Örnek:


Kod:
int a = 5;
float b = 2.5;

float sonuc = a + b;

Burada:


a

otomatik olarak:


5.0

haline çevrilir.
Sonuç:


7.5

olur.

Bellekte Gerçekten Ne Oluyor?​

Örnek:


Kod:
int a = 10;
int b = 20;

RAM:


Kod:
Adres      Değer

1000       10
1004       20

şeklinde olabilir.
Dikkat:


Kod:
1000
1004

arasında 4 fark vardır.
Çünkü:


int

4 byte yer kaplar.

Bellek İsrafı Örneği​

Kullanıcı yaşı tutacak.
Maksimum:


150

olsun.
Şunu yapmak mantıksızdır:


int yas = 20;

Çünkü:


4 byte

yer kaplar.
Bunun yerine:


unsigned char yas = 20;

kullanılabilir.
Bu:


1 byte

kaplar.
Büyük projelerde bu optimizasyonlar ciddi önem kazanır.

Stack Kavramına Giriş​

Bir fonksiyon içinde oluşturulan değişkenler genellikle Stack bölgesine yazılır.
Örnek:


Kod:
int main()
{
    int a = 10;
    int b = 20;
}

Çalışırken:


Kod:
STACK

---------
| b=20 |
---------
| a=10 |
---------

şeklinde saklanabilir.
Fonksiyon bittiğinde:


STACK TEMİZLENİR

ve değişkenler yok olur.
Bu konu ileride Pointer ve Bellek Yönetimi bölümünde çok daha kritik hale gelecek.

Bölüm Özeti​

Bu bölümde:
✅ RAM'in temel mantığını
✅ Değişkenlerin gerçekte ne olduğunu
✅ Veri tiplerini
✅ Byte ve Bit kavramlarını
✅ sizeof kullanımını
✅ signed ve unsigned yapılarını
✅ Tür dönüşümlerini
✅ Stack mantığının temelini
öğrendik.

Bir sonraki seride Operatörler ve Bilgisayarın Matematiksel İşlemleri Nasıl Gerçekleştirdiği konusuna geçeceğiz. Orada sadece + - * / değil, mantıksal operatörler, bit düzeyinde işlemler ve programlama mantığının temel karar mekanizmalarını detaylı şekilde inceleyeceğiz. 🚀
eline sağlık
 

Değişkenler, Veri Tipleri ve Bellek Mantığı​

Birçok kişi C öğrenmeye başladığında değişkenleri sadece:


int sayi = 5;

olarak görür.
Ancak gerçekte işler bundan çok daha farklıdır.
Bu bölümde değişkenlerin gerçekten ne olduğunu, RAM içerisinde nasıl tutulduğunu ve veri tiplerinin neden var olduğunu öğreneceğiz.

Bilgisayar Verileri Nerede Saklar?​

Bir program çalıştırıldığında veriler bilgisayarın RAM'ine yüklenir.
RAM'i devasa bir depo gibi düşünebiliriz.
Örnek:


Kod:
------------------------------------------------
| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 |
------------------------------------------------

Her kutunun bir adresi vardır.
Tıpkı ev adresleri gibi.
Bir değişken oluşturduğumuzda işletim sistemi RAM'de ona yer ayırır.
Örneğin:


int yas = 20;

Yazdığımızda RAM'de şuna benzer bir durum oluşur:


Kod:
Adres      Değer

1000       20
1001
1002
1003

Gerçekte adresler çok daha uzundur:


0x7ffeab123450

Ancak mantık aynıdır.

Değişken Nedir?​

Değişken:

Örneğin:


int yas = 20;

Burada:


yas

bir isimdir.
Bilgisayar aslında "yas" kelimesini kullanmaz.
Bilgisayarın gördüğü şey:


Kod:
Adres: 0x7ffeab123450
Değer: 20

şeklindedir.

Veri Tipleri Neden Var?​

Bilgisayar ne kadar yer ayıracağını bilmek zorundadır.
Örnek:
Bir harf saklamak istiyoruz.


'A'

Bir de:


5000000

saklamak istiyoruz.
Bu iki veri aynı büyüklükte değildir.
Bu yüzden veri tipleri vardır.

char Veri Tipi​

Tek karakter tutar.


char harf = 'A';

Bellekte:


A

olarak değil:


65

olarak tutulur.
Çünkü bilgisayar karakterleri ASCII tablosu ile saklar.
Örnek:


Kod:
A = 65
B = 66
C = 67
a = 97
b = 98

Kontrol edelim:


Kod:
char harf = 'A';

printf("%d", harf);

Çıktı:


65


ASCII Tablosu Nedir?​

ASCII karakterlerin sayısal karşılıklarıdır.
Örnek:


Kod:
Karakter     Sayı

A            65
B            66
C            67
D            68

Bu yüzden:


Kod:
char x = 65;
printf("%c", x);

çıktısı:


A

olacaktır.

int Veri Tipi​

Tam sayıları saklar.
Örnek:


int yas = 20;



int puan = 150;



int para = 100000;


int Kaç Byte Yer Kaplar?​

Modern sistemlerde genellikle:


4 byte

yer kaplar.
Kontrol edelim:


Kod:
#include <stdio.h>

int main()
{
    printf("%zu", sizeof(int));
}

Çıktı:


4

olacaktır.

Byte Nedir?​

Bilgisayarın temel veri birimidir.


1 byte = 8 bit

Örnek:


00000000

8 adet bit vardır.
Bu:


1 byte

eder.

Bit Nedir?​

Bilgisayarın anlayabildiği en küçük veri birimidir.
Sadece:


0

veya


1

olabilir.
Örnek:


10101010

8 bit = 1 byte

4 Byte Kaç Bit Eder?​



4 × 8 = 32 bit

Yani:


int

çoğu sistemde:


32 bit

yer kaplar.

float Veri Tipi​

Ondalıklı sayılar için kullanılır.
Örnek:


float not = 85.75;



float sicaklik = 36.6;


float Bellekte Nasıl Saklanır?​

Birçok kişi şöyle saklandığını sanır:


36.6

Hayır.
Bilgisayar bunu IEEE 754 standardına göre saklar.
Örneğin:


36.6

arka planda yaklaşık olarak:


01000010000100100110011001100110

gibi tutulur.
Bu yüzden bazı ondalıklı işlemlerde hata oluşabilir.
Örnek:


Kod:
float x = 0.1;
float y = 0.2;

printf("%f", x + y);

Bazen:


0.300000

yerine


0.30000004

gibi sonuçlar görebiliriz.

double Veri Tipi​

Daha hassas ondalıklı sayılar için kullanılır.


double pi = 3.141592653589793;

Genellikle:


8 byte

yer kaplar.
Kontrol:


printf("%zu", sizeof(double));

Sonuç:


8


Veri Tiplerinin Boyutları​

Tipik bir 64 bit sistemde:
Veri TipiBoyut
char1 byte
short2 byte
int4 byte
float4 byte
long8 byte
double8 byte

sizeof Operatörü​

Bir değişkenin bellekte ne kadar yer kapladığını gösterir.
Örnek:


Kod:
int sayi;

printf("%zu", sizeof(sayi));

Sonuç:


4


signed ve unsigned​

Normalde:


int

hem negatif hem pozitif saklar.
Örnek:


int x = -10;

Ama:


unsigned int x;

sadece pozitif sayı saklar.
Örnek:


Kod:
0
1
2
3
...


signed ve unsigned Neden Var?​

Bellek kullanımını daha verimli yapmak için.
Örneğin:


8 bit

bir alanımız olsun.
signed:


-128 ile 127

arası saklar.
unsigned:


0 ile 255

arası saklar.

Tür Dönüşümü (Casting)​

Bazen veri tipini değiştirmek isteriz.
Örnek:


Kod:
float x = 10.8;

int y = (int)x;

Sonuç:


10

olur.
Ondalık kısım atılır.

Otomatik Tür Dönüşümü​

Örnek:


Kod:
int a = 5;
float b = 2.5;

float sonuc = a + b;

Burada:


a

otomatik olarak:


5.0

haline çevrilir.
Sonuç:


7.5

olur.

Bellekte Gerçekten Ne Oluyor?​

Örnek:


Kod:
int a = 10;
int b = 20;

RAM:


Kod:
Adres      Değer

1000       10
1004       20

şeklinde olabilir.
Dikkat:


Kod:
1000
1004

arasında 4 fark vardır.
Çünkü:


int

4 byte yer kaplar.

Bellek İsrafı Örneği​

Kullanıcı yaşı tutacak.
Maksimum:


150

olsun.
Şunu yapmak mantıksızdır:


int yas = 20;

Çünkü:


4 byte

yer kaplar.
Bunun yerine:


unsigned char yas = 20;

kullanılabilir.
Bu:


1 byte

kaplar.
Büyük projelerde bu optimizasyonlar ciddi önem kazanır.

Stack Kavramına Giriş​

Bir fonksiyon içinde oluşturulan değişkenler genellikle Stack bölgesine yazılır.
Örnek:


Kod:
int main()
{
    int a = 10;
    int b = 20;
}

Çalışırken:


Kod:
STACK

---------
| b=20 |
---------
| a=10 |
---------

şeklinde saklanabilir.
Fonksiyon bittiğinde:


STACK TEMİZLENİR

ve değişkenler yok olur.
Bu konu ileride Pointer ve Bellek Yönetimi bölümünde çok daha kritik hale gelecek.

Bölüm Özeti​

Bu bölümde:
✅ RAM'in temel mantığını
✅ Değişkenlerin gerçekte ne olduğunu
✅ Veri tiplerini
✅ Byte ve Bit kavramlarını
✅ sizeof kullanımını
✅ signed ve unsigned yapılarını
✅ Tür dönüşümlerini
✅ Stack mantığının temelini
öğrendik.

Bir sonraki seride Operatörler ve Bilgisayarın Matematiksel İşlemleri Nasıl Gerçekleştirdiği konusuna geçeceğiz. Orada sadece + - * / değil, mantıksal operatörler, bit düzeyinde işlemler ve programlama mantığının temel karar mekanizmalarını detaylı şekilde inceleyeceğiz. 🚀
Helal olsun C bilmek bı beceri ve bunu birine rahatça anlatabilmek daha büyük bir beceri eline sağlık
 
Geri
En Üst