Hex sistemi, yani onaltılık sistem, 16 tabanlı bir sayı sistemidir. Ondalık sistemde sadece 10 rakam bulunduğu için (0–9), hex sistemindeki ek 6 rakam alfabenin ilk 6 harfiyle gösterilir.
Onaltılık sayılar yalnızca 16 sembolle gösterilir. Bu semboller veya değerler 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ve F'dir.
Burada:
Her rakam bir ondalık değeri temsil eder. Örneğin, B harfi, ondalık sistemde 11’e, ikili (binary) sistemde ise 1011’e karşılık gelir.
Onaltılık sayı sistemleri, ikili sayı (taban-2), sekizli sayı (taban-8) ve ondalık sayı sistemleri (taban-10) gibi diğer sayı sistemlerine dönüştürülebilir.
Hex sistemi, bilgisayarlarda ikili sayıları ifade etmenin kolay bir yoludur çünkü bir bayt genellikle 8 bit (binary rakam) içerir ve hex sayesinde bu veriler daha okunabilir hâle gelir.
Ondalık sistem, günümüzde en eski ve en yaygın kullanılan sayı sistemlerinden biridir. 10 tabanlı bir sistemdir çünkü 10 farklı rakam kullanılır: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Hepimizin günlük hayatta kullandığı sistem budur. Bu sistemde her basamak 10’un katı olarak hesaplanır.
Örneğin:
11 ondalık değeri, hex sisteminde B olarak yazılır, binary (ikili) sistemde ise 1011 olarak gösterilir.
Bildiğimiz gibi, onaltılık sayı sisteminde 16 rakam bulunur ve bunlar ondalık sayılarla aynı şekilde 0'dan 9'a kadar gösterilir, ancak bundan sonra A, B, C, D ve E gibi önceki sayıların alfabetik gösterimiyle başlar.
Şimdi 'hex'in ondalık sayı sistemlerine dönüşümüne bakalım.
Onaltılı sistemden ondalık sisteme dönüştürme, bir sayının 16 tabanından 10 tabanına çevrilmesi anlamına gelir. Aslında bu dönüşüm, bilgisayar dünyasında oldukça önemlidir çünkü düşük seviyeli programlama işlemleri ve donanım arayüzleri genellikle onaltılık (hex) gösterimi kullanır.
Örnek vermek gerekirse, bellek adresleri ve makine dili komutları çoğu zaman hex formatında ifade edilir. Bu değerleri ondalık sayılara çevirmek, onları daha kolay analiz etmemizi ve işlememizi sağlar.
Öncelikle, hex'teki tüm harflerin aşağıdaki tabloda listelendiği gibi ondalık eşdeğerleri olduğunu bilmelisin.
|
Hex base 16 |
Decimal base 10 |
Calculation |
|
0 |
0 |
- |
|
1 |
1 |
- |
|
2 |
2 |
- |
|
3 |
3 |
- |
|
4 |
4 |
- |
|
5 |
5 |
- |
|
6 |
6 |
- |
|
7 |
7 |
- |
|
8 |
8 |
- |
|
9 |
9 |
- |
|
A |
10 |
- |
|
B |
11 |
- |
|
C |
12 |
- |
|
D |
13 |
- |
|
E |
14 |
- |
|
F |
15 |
- |
|
10 |
16 |
1×161+0×160 = 16 |
|
11 |
17 |
1×161+1×160 = 17 |
|
12 |
18 |
1×161+2×160 = 18 |
|
13 |
19 |
1×161+3×160 = 19 |
|
14 |
20 |
1×161+4×160 = 20 |
|
15 |
21 |
1×161+5×160 = 21 |
|
16 |
22 |
1×161+6×160 = 22 |
|
17 |
23 |
1×161+7×160 = 23 |
|
18 |
24 |
1×161+8×160 = 24 |
|
19 |
25 |
1×161+9×160 = 25 |
|
1A |
26 |
1×161+10×160 = 26 |
|
1B |
27 |
1×161+11×160 = 27 |
|
1C |
28 |
1×161+12×160 = 28 |
|
1D |
29 |
1×161+13×160 = 29 |
|
1E |
30 |
1×161+14×160 = 30 |
|
1F |
31 |
1×161+15×160 = 31 |
|
20 |
32 |
2×161+0×160 = 32 |
|
30 |
48 |
3×161+0×160 = 48 |
|
40 |
64 |
4×161+0×160 = 64 |
|
50 |
80 |
5×161+0×160 = 80 |
|
60 |
96 |
6×161+0×160 = 96 |
|
70 |
112 |
7×161+0×160 = 112 |
|
80 |
128 |
8×161+0×160 = 128 |
|
90 |
144 |
9×161+0×160 = 144 |
|
A0 |
160 |
10×161+0×160 = 160 |
|
B0 |
176 |
11×161+0×160 = 176 |
|
C0 |
192 |
12×161+0×160 = 192 |
|
D0 |
208 |
13×161+0×160 = 208 |
|
E0 |
224 |
14×161+0×160 = 224 |
|
F0 |
240 |
15×161+0×160 = 240 |
|
100 |
256 |
1×162+0×161+0×160 = 256 |
|
200 |
512 |
2×162+0×161+0×160 = 512 |
|
300 |
768 |
3×162+0×161+0×160 = 768 |
|
400 |
1024 |
4×162+0×161+0×160 = 1024 |
Bir hex sayısını ondalık (decimal) sisteme çevirmek için her basamağı 16’nın katı olarak düşünmelisin.
Örnek:
1A sayısını çevirelim.
Yani:
1A (hex) = 26 (decimal)
Bu işlemi her hex sayı için yapabilirsin. Ama tabii ki en kolay yolu online ücretsiz bir araç kullanarak çevirmek.
Manuel dönüşümleri anlattığımıza göre, şimdi de hex değerlerini popüler programlama dilleri ile nasıl otomatik olarak decimal’e çevirebileceğine bakalım. Çoğu dilde bu işlem için hazır fonksiyonlar veya kütüphaneler mevcut.
Python
Python’da int() fonksiyonunu kullanarak bir hexadecimal (onaltılık) metni kolayca ondalık değere çevirebilirsin:
Ayrıca Python’da doğrudan hexadecimal yazım da desteklenir:
JavaScript
JavaScript’te parseInt() fonksiyonu ile hex string’i decimal değere çevirebilirsin:
Tıpkı Python’da olduğu gibi, JavaScript’te de hex sabitleri doğrudan kullanılabilir:
Hex sisteminde kullanılan 16 rakam şunlardır:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Onaltılık sayı sistemi, bilgisayar programlama ve sistem tasarımı alanlarında yaygın olarak kullanılır.
Öncelikle bilmen gereken şey şu: Onaltılık sistem (hex), 16 tabanlıdır. Yani 0’dan 15’e kadar olan her sayının bir karşılığı vardır. 10’dan sonraki sayılar harflerle temsil edilir:
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F
Diyelim ki 45 sayısını çevirmek istiyorsun. 45’i 16’ya böl:
45 ÷ 16 = 2 kalan 13 → 2D
Yani 45’in onaltılık karşılığı 2D olur.
Aşağıdaki tablo sana yardımcı olur:
Hex Harf Sayı Karşılığı
A 10
B 11
C 12
D 13
E 14
F 15
Bu harfler, 10 ile 15 arasındaki değerleri temsil etmek için kullanılır.
Bir sayının negatif olup olmaması, işin biraz daha teknik kısmı. Bilgisayarlarda bu işlem genelde two's complement yöntemiyle yapılır.
Bir örnek verelim: -1 sayısı 8 bit’lik hex formatında FF olarak gösterilir. Ama gündelik kullanımda negatif sayıları doğrudan çevirmek yerine, genelde pozitif sayıyı çevirip işaretini ayrı tutmak daha kolaydır.
Bunun için hesap makinesi kullanabilirsin ya da bizim ücretsiz Hex to Decimal Dönüştürücü aracımızdan faydalanabilirsin.
Manuel yapmak istersen örnek verelim:
1A sayısı nedir?
1 × 16 + 10 = 26
Onaltılık sistem 16 tabanlıdır.
20’yi 16’ya böldüğümüzde:
20 ÷ 16 = 1 kalan 4
Yani: 1 × 16 + 4 = 20
Bu da bize şu sonucu verir:
20 (ondalık) = 14 (hex)
14 ondalık sayı sisteminde yer alır. Onaltılıkta 14, E harfine karşılık gelir.
Kısacası: 14 (decimal) = E (hex)
Onaltılık (hexadecimal) sayı sistemi, 16 tabanlı bir sayı sistemidir.
Toplamda sadece 16 farklı rakam veya değer kullanılır.