1. Sekizli kodlama

Kodlamalardan bahsetmişken... Bildiğiniz gibi, günlük hayatta ondalık gösterim kullanırız: tüm sayılarımız 10 sembol kullanılarak temsil edilir: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 10 tane var. sayılar, bu nedenle sisteme ondalık denir.

Ancak programcılar büyük zaman mucitleridir. Hemen farklı sayıda sembol kullanan kodlamalar buldular. Örneğin, 16, 8 ve 2.

8 sembol kullanan alternatif kodlama en kolay olanıdır: sadece 8 ve 9'u bırakın ve sekizli bir kodlama ( sekizli sayı sistemi ) elde edin .

Ve evet, sayısal değişmezleri belirtmek için sekizli sistemi kullanabilirsiniz. Tabii gerçekten ihtiyacınız varsa. Göründüğünden daha kolay. Numaradan önce 0 rakamını yazmanız yeterlidir.

Başka bir deyişle, Java, 0 ile başlayan herhangi bir tamsayı sabit değerini sekizlik bir değer olarak ele alır.

Örnekler:

kod notlar
int x = 015;
x 13'tür: 1*8+5
int x = 025;
x, 21'dir: 2*8+5
int x = 0123;
x, 83'tür: 1*64+2*8+3 == 1*8 2 +2*8 1 +3*8 0
int x = 078;
Bu derleme yapmaz: 8, sekizli kodlamada kullanılan sembollerden biri değildir.

Kodunuza sekizli sayılar yazmanız pek olası değildir, ancak bunların ne olduğunu bilmelisiniz. Sonuçta, başkaları tarafından yazılan kodları okumanız gerekecek. Ve yukarıda bahsedildiği gibi, programcılar büyük mucitler.

Her sayının önüne 0 yazamayacağınızı unutmayın.



2. İkili kodlama

İkili kodlama daha da ilginçtir. Sekizlik sadece 0-7 rakamlarına sahipse, ikili sadece 0 ve 1'e sahiptir. Bu kodlama neden gerekli?

Bu, bir bilgisayarın iç yapısı ile ilgili her şeye sahiptir. Bir bilgisayardaki her şey elektrikle çalışır ve olduğu gibi, elektrik kullanarak bir şeyi depolamanın ve iletmenin en etkili yolu iki durumu kullanmaktır: ya telde elektrik yoktur (sıfır) ve elektrik vardır (bir).

İkili sayı sisteminin popülaritesinin kaynağı budur.

Prensip olarak, Java'da çok sık kullanılmaz: Java, üzerinde çalıştığı donanımdan tamamen soyutlanmış, üst düzey bir dil olarak kabul edilir. Gerçekten de, bir bilgisayarda verileri depolamak ve işlemek için hangi formatın kullanıldığını gerçekten umursuyor musunuz?

Ancak son yıllarda programcılar ikili kodlamayı (ve buna dayalı diğer kodlamaları) sevmeye başladılar. Sonuç olarak Java, ikili sayıları girdi olarak alan operatörlere sahiptir. Ve kayan noktalı sayıların doğruluğu ikili temsillerine bağlıdır.

Temel olarak, bu kodlama hakkında bilgi sahibi olmanız, bilmemenizden daha iyidir.

Ve sekizli kodlamada olduğu gibi, Java'nın ikili sistemi kullanarak sabit değerleri kodlamak için bir yolu vardır. Yani değişmez değerler yalnızca 0'lar ve 1'lerden oluşur. Java derleyicisinin, kodun yalnızca sıfırlardan ve birlerden oluşan bir ondalık sayı yerine ikili olarak kodlanmış sayısal bir hazır bilgi içerdiğini anlaması için , tüm ikili sabit değerler 0b öneki kullanılarak tanımlanır ("b", ikili kelimesinden gelir ) .

Örnekler:

kod notlar
int x = 0b100; 
х 4'tür: 1*4+0*2+0
int x = 0b1111;
х 15'tir: 1*8+1*4+1*2+1
int x = 0b1111000111; 
х 967'dir: 1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +0*2 4 +0 *2 3 +1*2 2 + 1*2+1;
int x = 0b12000;
Bu derleme yapmaz: 2, ikili kodlamada kullanılan sembollerden biri değildir.


3. Onaltılık kodlama

Sekizli ve ikili kodlamalara ek olarak, hazır değerler onaltılık olarak da yazılabilir. Bu çok popüler bir kodlamadır.

Bunun nedeni, ikili notasyonun sayıların gerçekte nasıl depolandığına olabildiğince yakın olmasına rağmen, insanların bu tür sayılarla etkili bir şekilde çalışmasının çok zor olmasıdır: ikili sistemde, bir milyon sayısı 7 değil, 20 basamak içerir.

Bu yüzden programcılar onaltılık sistemi buldular. Sonuçta, 16, 2'nin 4. kuvvetine yükseltilmiştir, bu nedenle tam olarak 4 bit, bir onaltılık basamağa karşılık gelir. Kabaca söylemek gerekirse, her 4 bit artık tek bir onaltılık basamak olarak yazılabilir.

Onaltılık kodlamanın da kendine özgü bir ön eki vardır: 0x . Örnekler:

Ondalık sayı İkili gösterim Onaltılık gösterim
17 0b 0001 0001 0x1 1 _
4 1 0b 0010 1 00 1 0x2 9 _
85 0b 0101 0101 0x5 5 _
256 0b 1 0000 0000 0x 1 0 0

Tamam, sekizli sistemi nasıl elde ettiğimiz yeterince açık diyorsunuz: 8 ve 9 rakamlarını attık ama onaltılık sistem için fazladan 6 sembolü nereden bulacağız? Onları görmek isterim!

Her şey basit. İngiliz alfabesinin ilk 6 harfi eksik 6 sembol olarak alınmıştır: A (10), B (11), C (12), D (13), E (14), F (15).

Örnekler:

Onaltılık gösterim İkili gösterim Ondalık sayı
0x1 _ 0b 0000 0001 1
0x9 _ 0b 0000 1001 9
0x Bir 0b 0000 1010 10
0x B 0b 0000 1011 11
0x C 0b 0000 1100 12
0xD _ 0b 0000 1101 13
0x E 0b 0000 1110 14
0x F 0b 0000 1111 15
0x 1 F 0b 0001 1111 31
0x AF _ 0b 1010 1111 175
0x F F 0b 1111 1111 255
0x F F F 0b 1111 1111 1111 4095


4. Bir sayıyı onaltılıktan dönüştürme

Bir sayıyı onaltılıktan ondalığa dönüştürmek çok kolaydır. Diyelim ki 0 x A F C F sayınız var . Ondalık olarak ne kadar?

İlk olarak, konumsal bir sayı sistemimiz var, bu da sağdan sola doğru hareket ettikçe her basamağın toplam sayıya katkısının 16 kat arttığı anlamına geliyor:

A * 16 3 + F * 16 2 + C * 16 1 + F

A sembolü 10 rakamına, C harfi 12 rakamına ve F harfi on beşi temsil etmektedir. Biz:

10 * 16 3 + 15 * 16 2 + 12 * 16 1 + 15

Rakamlara karşılık gelen çeşitli güçlere 16'yı yükselterek şunu elde ederiz:

10 * 4096 + 15 * 256 + 12 * 16 + 15

Her şeyi özetliyoruz ve şunu elde ediyoruz:

45007

Bu numaranın hafızada nasıl saklandığını biliyorsunuz:

0x A F C F

Ama şimdi ikiliye çevirelim. İkili olarak şöyle olurdu:

0b 1010 1111 1100 1111

Dört bitlik her set, tam olarak bir onaltılık karaktere karşılık gelir. Bu çok uygun. Herhangi bir çarpma veya üs olmadan."