Say Sistemi Çevirici

Oflayn işləyirHeç nə yüklənmirPulsuz, qeydiyyatsız
İkilik—
Səkkizlik—
Onluq—
Onaltılıq—
Əsas—

Bitlər və two's complement

Bit naxışı—
İşarəli oxunuş—
İşarəsiz oxunuş—

Ədədləri ikilik, səkkizlik, onluq, onaltılıq və 36-ya qədər istənilən say sistemi arasında çevirin — istənilən uzunluqda dəqiq hesablama və eyni bitləri işarəli/işarəsiz oxuyan two's complement görünüşü ilə.

Eyni ədəd dörd sistemdə

Say sistemləri qiymət yox, yazılışdır: 255, 0xFF və 11111111 — bir ədədin üç yazılışı. Onaltılığın yeri ondadır ki, hər rəqəmi düz dörd bitdir: bir bayt həmişə iki onaltılıq rəqəmdir — 0xFF saymadan 11111111-dir. Səkkizlik əsasən Unix fayl icazələrində yaşayır: hər rəqəm bir rwx üçlüyüdür.

OnluqİkilikSəkkizlikOnaltılıqHarada rast gəlirsiniz
810001087-dən yuxarı tək bit
25511111111377fftam bir bayt; RGB-nin bir kanalı
40961000000000000100001000bir yaddaş səhifəsi
6553516 vahid177777ffffən böyük 16-bit işarəsiz qiymət; ən böyük port nömrəsi
1677721524 vahid77777777ffffff#ffffff — ağ, ən böyük 24-bit rəng

Two's complement panelini oxumaq

En seçin — panel həmin enli işarəli tam ədədin saxlayacağı dəqiq bit naxışını göstərir, sonra eyni bitləri iki cür oxuyur. Yuxarı bit qoyulanda iki ədəd fərqlənir: həmin bit işarəli oxunuşda −2en−1, işarəsizdə +2en−1 dəyərindədir, ona görə oxunuşlar həmişə düz 2en aralıdır. Klassik görüntülər: enə görə 255, 4294967295 və ya 18446744073709551615 kimi görünən −1.

Hər şey brauzerinizdə dəqiq tam ədəd hesabı ilə işləyir — yazdığınız heç nə heç yerə göndərilmir.

Tez-tez verilən suallar

Alət niyə dəqiq hesablama işlədir?

Çünki bura gətirilən ədədlər — 64-bit heşlər, verilənlər bazası id-ləri, bit maskaları — məhz adi üzən nöqtə hesabının korladıqlarıdır. JavaScript-in Number tipi 53 bit dəqiqlik saxlayır: parseInt 0xDEADBEEFDEADBEEF-in aşağı bitlərini səssizcə itirir və yenə hər sistemdə inamlı cavab çap edir. Bu alət ixtiyari dəqiqlikli tam ədədlərlə hesablayır, ona görə istənilən uzunluqda qiymət dəqiq çevrilir.

0x, 0b və 0o prefiksləri nə deməkdir?

Proqramlaşdırma dillərinin literalın sistemini bildirmə üsuludur: 0x — onaltılıq, 0b — ikilik, 0o — səkkizlik. Uyğun sistem seçiləndə alət prefiksi qəbul edib çevirmədən əvvəl atır. İkilik sahəyə yazılmış 0x-i isə təxmin etmək əvəzinə qəsdən rədd edir — elan olunmuş sistemə zidd prefiks yanlış sahənin seçildiyinə işarədir.

Səkkizlik ədədimdə 9 niyə xətadır?

Hər sistemdə rəqəm sayı onun ölçüsü qədərdir: səkkizlikdə 0–7, ikilikdə 0–1, onaltılıqda 0–9 üstəgəl a–f. Səkkizlik ədəddə 9 heç nə ifadə edə bilməz, ona görə alət rəqəmi ötürmək əvəzinə girişi rədd edir — ötürmək yapışdırdığınızdan başqa bir ədədi səssizcə çevirmək olardı.

Two's complement nədir?

Kompüterlərin mənfi tam ədədləri saxlama üsuludur. Sabit endə mənfi ədəd öz qiyməti üstəgəl 2 üstü en kimi saxlanır: 8 bitdə -1 = 11111111, bu isə həm də 255-in saxlanma formasıdır. Bitlər tək başına hansının nəzərdə tutulduğunu deyə bilmir — bunu mənbə kodundakı tip həll edir. Alət iki oxunuşu yanaşı göstərir, çünki bu ikimənalılıq baqların klassik mənbəyidir.

-1 gözlədiyim yerdə niyə 4294967295 görürəm?

Bu, two's complement qarışıqlığının canlı halıdır: 32-bit -1-in işarəsiz oxunuşu. -1-in 32 bitdəki naxışı otuz iki vahiddir və işarəsiz oxunanda 4294967295 edir. Kiçik mənfi gözlənilən yerdə 65535, 4294967295 və ya 18446744073709551615 kimi nəhəng «yuvarlaq» ədəd görünürsə, işarəli qiymət işarəsiz tiplə oxunub — və ya əksinə.

16-dan yuxarı əsaslar nəyə lazımdır?

36-lıq sistem — 0–9, sonra a–z — böyük-kiçik hərfə həssas olmayan ən sıx kodlaşdırmadır, ona görə URL-lərdəki qısa id-lərdə çox işlənir. 32 əsaslı variantlar birdəfəlik şifrə açarlarında və fayl identifikatorlarında görünür. Çevirici 36-ya qədər qalxır ki, belə qiymətlər də açılsın; ondan yuxarıda razılaşdırılmış rəqəm əlifbası yoxdur.

Oxşar alətlər