forked from yazbel/python-istihza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
basit_bir_iletisim_modeli.html
826 lines (790 loc) · 34.9 KB
/
basit_bir_iletisim_modeli.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
<!DOCTYPE html>
<html lang="tr">
<html lang="tr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta content="Bu bölümde, bilgisayarların çalışma mantığını daha iyi anlayabilmek için basit bir iletişim modeli oluşturacağız." name="description" />
<meta content="iletişim, Mors, alfabesi" name="keywords" />
<title>Basit bir İletişim Modeli — Python 3 için Türkçe Kılavuz</title>
<link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script src="_static/translations.js"></script>
<link rel="search" title="Ara" href="search.html" />
<link rel="next" title="Karakter Kodlama (Character Encoding)" href="karakter_kodlama.html" />
<link rel="prev" title="İkili (Binary) Dosyalar" href="ikili_dosyalar.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head><body>
<div class='header'><a href='https://yazbel.com'>yazbel.com</a></div>
<ul class='navbar'>
<li><a href="#"><del>pdf desteği sonlanmıştır</del></a></li>
<li class="forum"><a href="http://forum.yazbel.com">forum</a></li>
</ul>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="karakter_kodlama.html" title="Karakter Kodlama (Character Encoding)"
accesskey="N">sonraki</a></li>
<li class="right" >
<a href="ikili_dosyalar.html" title="İkili (Binary) Dosyalar"
accesskey="P">önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Basit bir İletişim Modeli</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="body" role="main">
<div class="section" id="basit-bir-iletisim-modeli">
<h1>Basit bir İletişim Modeli<a class="headerlink" href="#basit-bir-iletisim-modeli" title="Bu başlık için kalıcı bağlantı">¶</a></h1>
<p>Bu bölümde, bilgisayarların çalışma mantığını, verileri nasıl işlediğini,
sayılarla karakter dizilerini nasıl temsil ettiğini daha iyi ve daha net bir
şekilde anlayabilmek için basit bir iletişim modeli kuracağız.</p>
<p>Şimdi şöyle bir durum hayal edin: Diyelim ki, hatlar üzerinden iletilen elektrik
akımı yoluyla bir arkadaşınızla haberleşmenizi sağlayacak bir sistem
tasarlıyorsunuz. Bu sistem, verici tarafında elektrik akımının gönderilmesini
sağlayan bir anahtardan, alıcı tarafında ise, gelen akımın şiddetine göre loş
veya parlak ışık veren bir ampulden oluşuyor. Eğer vericiden gönderilen elektrik
akımı düşükse alıcı loş bir ışık, eğer gelen akım yüksekse alıcı parlak bir ışık
görecek. Elbette eğer isterseniz düşük akım-yüksek akım karşıtlığı yerine akım
varlığı-akım yokluğu karşıtlığını da kullanabilirsiniz. Böylece vericiden akım
gönderildiğinde ampul yanar, gönderilmediğinde ise söner. Bana düşük akım-yüksek
akım karşıtlığı daha kullanışlı geldiği için böyle tercih ettim. Siz tabii ki
öbür türlüsünü de tercih edebilirsiniz.</p>
<p>Yukarıda bahsedildiği gibi sistemimizi kurduk diyelim. Peki ama bu sistem verici
ile alıcı arasında basit de olsa bir iletişim kurmamızı nasıl olacak da
sağlayacak?</p>
<p>Aslında bunun cevabı ve mantığı çok basit. Gördüğünüz gibi, bu sistemde iki
farklı durum söz konusu: Loş ışık ve parlak ışık (veya yanan ampul ve sönmüş
ampul).</p>
<p>Bu ikili yapıyı, tahmin edebileceğiniz gibi, ikili (<em>binary</em>) sayma sistemi
aracılığıyla rahatlıkla temsil edebiliriz. Mesela loş ışık durumuna <cite>0</cite>, parlak
ışık durumuna ise <cite>1</cite> diyebiliriz. Dolayısıyla verici, ampulün loş ışık
vermesini sağlayacak düşük bir akım gönderdiğinde bunun değerini <cite>0</cite>, ampulün
yüksek ışık vermesini sağlayacak yüksek bir akım gönderdiğinde ise bunun
değerini <cite>1</cite> olarak değerlendirebiliriz.</p>
<p>Burada yaptığımız dönüştürme işlemine teknik olarak ‘kodlama’ (<em>encoding</em>) adı
verilir. Bu kodlama sistemine göre biz, iki farklı elektrik akımı değerini, yani
loş ışık ve parlak ışık değerlerini sırasıyla ikili sistemdeki <cite>0</cite> ve <cite>1</cite>
sayıları ile eşleştirip, loş ışığa <cite>0</cite>, parlak ışığa ise <cite>1</cite> dedik.</p>
<p>Hemen anlayacağınız gibi, bahsettiğimiz bu hayali sistem, telgraf iletişimine
çok benziyor. İşte gerçekte de kullanılan telgraf sistemine çok benzeyen bu
basitleştirilmiş model bizim bilgisayarların çalışma mantığını da daha net bir
şekilde anlamamızı sağlayacak.</p>
<div class="section" id="bitlik-bir-sistem">
<h2>8 Bitlik bir Sistem<a class="headerlink" href="#bitlik-bir-sistem" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Hatırlarsanız ikili sayma sisteminde <cite>0</cite>’lar ve <cite>1</cite>’lerin oluşturduğu her bir
basamağa ‘bit’ adını veriyorduk.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p><em>Bit</em> kelimesi İngilizcede ‘<strong>bi</strong>nary’ (ikili) ve ‘digi<strong>t</strong>’ (rakam)
kelimelerinin birleştirilmesi ile üretilmiştir.</p>
</div>
<p>Bu bilgiye göre mesela <cite>0</cite> sayısı bir bitlik bir sayı iken, <cite>1001</cite> sayısı dört
bitlik bir sayıdır. İletişimimizi eksiksiz bir biçimde sağlayabilmemiz, yani
gereken bütün karakterleri temsil edebilmemiz için, sistemimizin 8 hanelik bir
sayı kapasitesine sahip olması, yani teknik bir dille ifade etmek gerekirse
sistemimizin 8 bitlik olması herhalde yeterli olacaktır.</p>
<p>8 bitlik bir iletişim sisteminde <cite>10</cite>’a kadar şu şekilde sayabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="nb">bin</span><span class="p">(</span><span class="n">i</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
<span class="gp">...</span>
<span class="go">00000000</span>
<span class="go">00000001</span>
<span class="go">00000010</span>
<span class="go">00000011</span>
<span class="go">00000100</span>
<span class="go">00000101</span>
<span class="go">00000110</span>
<span class="go">00000111</span>
<span class="go">00001000</span>
<span class="go">00001001</span>
</pre></div>
</div>
<p>Verici tarafındaki kişi elindeki anahtar yardımıyla farklı kuvvetlere sahip
sinyalleri art arda göndererek yukarıda gösterildiği gibi on farklı sayıyı
alıcıya iletebilir. Sistemimizin 8 bitlik olduğunu düşünürsek karşı tarafa <cite>0</cite>
sayısı ile birlikte toplam 2 ** 8 = 256 farklı sinyal gönderebiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">256</span><span class="p">):</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="nb">bin</span><span class="p">(</span><span class="n">i</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
<span class="go">00000000</span>
<span class="go">00000001</span>
<span class="go">00000010</span>
<span class="go">00000011</span>
<span class="go">00000100</span>
<span class="gp">...</span>
<span class="gp">...</span>
<span class="gp">...</span>
<span class="go">11111001</span>
<span class="go">11111010</span>
<span class="go">11111011</span>
<span class="go">11111100</span>
<span class="go">11111101</span>
<span class="go">11111110</span>
<span class="go">11111111</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, bizim 8 bitlik bu sistemle gönderebileceğimiz son sinyal, yani
sayı <cite>255</cite>’tir. Bu sistemle bundan büyük bir sayıyı gönderemeyiz. Bu durumu
kendi gözlerinizle görmek için şu kodları çalıştırın:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">256</span><span class="p">):</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="nb">bin</span><span class="p">(</span><span class="n">i</span><span class="p">)[</span><span class="mi">2</span><span class="p">:],</span> <span class="n">i</span><span class="o">.</span><span class="n">bit_length</span><span class="p">(),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada ilk sütun <cite>256</cite>’ya kadar olan sayıların ikili sistemdeki karşılıklarını,
ikinci sütun ise bu sayıların bit uzunluğunu gösteriyor. Bu çıktıyı
incelediğinizde de göreceğiniz gibi, 8 bit uzunluğa sahip son sayı <cite>255</cite>’tir.
<cite>256</cite> sayısı ise 9 bit uzunluğa sahiptir. Yani <cite>256</cite> sayısı mecburen bizim
sistemimizin dışındadır:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">bin</span><span class="p">(</span><span class="mi">255</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span>
<span class="go">'11111111'</span>
<span class="gp">>>> </span><span class="p">(</span><span class="mi">255</span><span class="p">)</span><span class="o">.</span><span class="n">bit_length</span><span class="p">()</span>
<span class="go">8</span>
<span class="gp">>>> </span><span class="nb">bin</span><span class="p">(</span><span class="mi">256</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span>
<span class="go">'100000000'</span>
<span class="gp">>>> </span><span class="p">(</span><span class="mi">256</span><span class="p">)</span><span class="o">.</span><span class="n">bit_length</span><span class="p">()</span>
<span class="go">9</span>
</pre></div>
</div>
<p>Dediğimiz gibi, bu sistemde elimizde toplam 8 bit var. Yani bu sistemi kullanarak
<cite>0</cite>’dan <cite>256</cite>’ya kadar sayıp, bu sayıları alıcıya iletebiliriz.</p>
<p>Peki verici ile alıcı arasında birtakım sayıları gönderip alabilmek ne işimize
yarar? Yani bu iş neden bu kadar önemli?</p>
<p>Bu soruların cevabını birazdan vereceğiz, ama ondan önce daha önemli bir konuya
değinelim.</p>
</div>
<div class="section" id="hata-kontrolu">
<h2>Hata Kontrolü<a class="headerlink" href="#hata-kontrolu" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Buraya kadar her şey yolunda. Alıcı ve verici arasındaki iletişimi elektrik
akımı vasıtasıyla, 8 bitlik bir sistem üzerinden sağlayabiliyoruz. Ancak
sistemimizin çok önemli bir eksiği var. Biz bu sistemde hiçbir hata kontrolü
yapmıyoruz. Yani vericiden gelen mesajın doğruluğunu test eden hiçbir ölçütümüz
yok. Zira alıcı ile verici arasında gidip gelen veriler pek çok farklı şekilde
ve sebeple bozulmaya uğrayabilir. Örneğin, gönderilen veri alıcı tarafından
doğru anlaşılamayabilir veya elektrik sinyallerini ileten kablolardaki arızalar
sinyallerin doğru iletilmesini engelleyebilir.</p>
<p>İşte bütün bunları hesaba katarak, iletişimin doğru bir şekilde
gerçekleşebilmesini sağlamak amacıyla sistemimiz için basit bir hata kontrol
süreci tasarlayalım.</p>
<p>Dediğimiz gibi, elimizdeki sistem toplam <cite>256</cite>’ya kadar saymamıza olanak
tanıyor. Çünkü bizim sistemimiz 8 bitlik bir sistem. Bu sisteme bir hata kontrol
mekanizması ekleyebilmek için veri iletimini 8 bitten 7 bite çekeceğiz. Yani
iletişimimizi toplam 2 ** 7 = 127 sayı ile sınırlayacağız. Boşta kalan 8. biti
ise bahsettiğimiz bu hata kontrol mekanizmasına ayıracağız.</p>
<p>Peki hata kontrol mekanizmamız nasıl işleyecek?</p>
<p>Çok basit: Vericiden alıcıya ulaşan verilerin tek mi yoksa çift mi olduğuna
bakacağız.</p>
<p>Buna göre sistemimiz şöyle çalışacak:</p>
<p>Diyelim ki verici alıcıya sinyaller aracılığıyla şu sayıyı göndermek istiyor:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mi">0110111</span>
</pre></div>
</div>
<p>Bu arada, bunun 7 bitlik bir sayı olduğuna dikkat edin. Dediğimiz gibi, biz
kontrol mekanizmamızı kurabilmek için elimizdeki 8 bitlik kapasitenin 7 bitini
kullanacağız. Boşta kalan 8. biti ise kontrol mekanizmasına tahsis edeceğiz.</p>
<p>Ne diyorduk? Evet, biz karşı tarafa 7 bitlik bir sayı olan <cite>0110111</cite> sayısını
göndermek istiyoruz. Bu sayıyı göndermeden önce, içindeki <cite>1</cite>’lerin miktarına
bakarak bu sayının tek mi yoksa çift mi olduğuna karar verelim. Burada toplam
beş adet <cite>1</cite> sayısı var. Yani bu sayı bir tek sayıdır. Eğer göndermek
istediğimiz sayı bir tek sayı ise, karşı tarafa ulaştığında da bir tek sayı
olmalıdır.</p>
<p>Biz bu sistem için şöyle bir protokol tasarlayabiliriz:</p>
<blockquote>
<div><p>Bu sistemde bütün sayılar karşı tarafa bir ‘tek sayı’ olarak iletilmelidir.
Eğer iletilen sayılar arasında bir çift sayı varsa, o sayı hatalı iletilmiş
veya iletim esnasında bozulmuş demektir.</p>
</div></blockquote>
<p>Peki biz iletilen bütün sayıların bir tek sayı olmasını nasıl sağlayacağız? İşte
bu işlemi, boşa ayırdığımız o 8. bit ile gerçekleştireceğiz:</p>
<blockquote>
<div><p>Eğer karşı tarafa iletilen bir sayı zaten tekse, o sayının başına <cite>0</cite>
ekleyeceğiz. Böylece sayının teklik-çiftlik durumu değişmemiş olacak. Ama eğer
iletilecek sayı çiftse, o sayının başına <cite>1</cite> ekleyeceğiz. Böylece çift sayıyı,
sistemimizin gerektirdiği şekilde, tek sayıya çevirmiş olacağız.</p>
</div></blockquote>
<p>Örnek olarak <cite>0110111</cite> sayısını verelim. Bu sayıda toplam beş adet <cite>1</cite> var. Yani
bu sayı bir tek sayı. Dolayısıyla bu sayının başına bir adet <cite>0</cite> ekliyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span> <span class="mi">0110111</span>
</pre></div>
</div>
<p>Böylece sayımızın teklik-çiftlik durumu değişmemiş oluyor. Karşı taraf bu sayıyı
aldığında <cite>1</cite>’lerin miktarına bakarak bu verinin doğru iletildiğinden emin
oluyor.</p>
<p>Bir de şu sayıya bakalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mi">1111011</span>
</pre></div>
</div>
<p>Bu sayıda toplam altı adet <cite>1</cite> sayısı var. Yani bu sayı bir çift sayı. Bir
sayının sistemimiz tarafından ‘hatasız’ olarak kabul edilebilmesi için bu
sayının bir tek sayı olması gerekiyor. Bu yüzden biz bu sayıyı tek sayıya
çevirmek için başına bir adet <cite>1</cite> sayı ekliyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">1111011</span>
</pre></div>
</div>
<p>Böylece sayımızın içinde toplam yedi adet <cite>1</cite> sayısı olmuş ve böylece sayımız
tek sayıya dönüşmüş oluyor.</p>
<p>Teknik olarak ifade etmemiz gerekirse, yukarıda yaptığımız kontrol türüne ‘eşlik
denetimi’ (<em>parity check</em>) adı verilir. Bu işlemi yapmamızı sağlayan bit’e ise
‘eşlik biti’ (<em>parity bit</em>) denir. İki tür eşlik denetimi bulunur:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p>Tek eşlik denetimi (<em>odd parity check</em>)</p></li>
<li><p>Çift eşlik denetimi (<em>even parity check</em>)</p></li>
</ol>
</div></blockquote>
<p>Biz kendi sistemimizde hata kontrol mekanizmasını bütün verilerin bir ‘tek sayı’
olması gerekliliği üzerine kurduk. Yani burada bir ‘tek eşlik denetimi’
gerçekleştirmiş olduk. Elbette bütün verilerin bir çift sayı olması gerekliliği
üzerine de kurabilirdik bu sistemi. Yani isteseydik ‘çift eşlik denetimi’ de
yapabilirdik. Bu tamamen bir tercih meselesidir. Bu tür sistemlerde yaygın
olarak ‘tek eşlik denetimi’ kullanıldığı için biz de bunu tercih ettik.</p>
<p>Bu örneklerden de gördüğünüz gibi, toplam 8 bitlik kapasitemizin 7 bitini veri
aktarımı için, kalan 1 bitini ise alınıp verilen bu verilerin doğruluğunu
denetlemek için kullanıyoruz. Elbette kullandığımız hata kontrol mekanizması
epey zayıf bir sistemdir. Ama, iletişim sistemleri arasında verilerin hatasız
bir şekilde aktarılıp aktarılamadığını kontrol etmeye yarayan bir sistem olan
eşlik denetiminin, bugün bilgisayarın belleklerinde (RAM) dahi kullanılmaya
devam ettiğini söylemeden geçmeyelim…</p>
</div>
<div class="section" id="karakterlerin-temsili">
<h2>Karakterlerin Temsili<a class="headerlink" href="#karakterlerin-temsili" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Yukarıda anlattıklarımızdan da gördüğünüz gibi, sistemimizi kullanarak 7 bit
üzerinden toplam 127 sayı gönderebiliyoruz. Tabii ki sistemimiz 8 bit olduğu
için 1 bit de boşta kalıyor. İşte boşta duran bu 1 biti ise eşlik denetimi için
kullanıyoruz. Ama elbette alıcı ile verici arasında sayı alışverişi yapmak pek
de heyecan uyandırıcı bir faaliyet değil. Karşı tarafa sayısal mesajlar yerine
birtakım sözel mesajlar iletebilsek herhalde çok daha keyifli olurdu…</p>
<p>Şunu asla unutmayın. Eğer bir noktadan başka bir noktaya en az iki farklı sinyal
yolu ile birtakım sayısal verileri gönderebiliyorsanız aynı şekilde sözel
verileri de rahatlıkla gönderebilirsiniz. Tıpkı düşük voltaj ve yüksek voltaj
değerlerini sırasıyla <cite>0</cite> ve <cite>1</cite> sayıları ile temsil ettiğiniz gibi,
karakterleri de bu iki sayı ile temsil edebilirsiniz. Yapmanız gereken tek şey
hangi sayıların hangi karakterlere karşılık geleceğini belirlemekten ibarettir.
Mesela elimizde sayılarla karakterleri eşleştiren şöyle bir tablo olduğunu
varsayalım:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 11%" />
<col style="width: 13%" />
<col style="width: 12%" />
<col style="width: 13%" />
<col style="width: 12%" />
<col style="width: 15%" />
<col style="width: 11%" />
<col style="width: 13%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>0</p></td>
<td><p>‘a’</p></td>
<td><p>1</p></td>
<td><p>‘b’</p></td>
<td><p>10</p></td>
<td><p>‘c’</p></td>
<td><p>11</p></td>
<td><p>‘d’</p></td>
</tr>
<tr class="row-odd"><td><p>100</p></td>
<td><p>‘e’</p></td>
<td><p>101</p></td>
<td><p>‘f’</p></td>
<td><p>110</p></td>
<td><p>‘g’</p></td>
<td><p>111</p></td>
<td><p>‘h’</p></td>
</tr>
<tr class="row-even"><td><p>1000</p></td>
<td><p>‘i’</p></td>
<td><p>1001</p></td>
<td><p>‘j’</p></td>
<td><p>1010</p></td>
<td><p>‘k’</p></td>
<td><p>1011</p></td>
<td><p>‘l’</p></td>
</tr>
<tr class="row-odd"><td><p>1100</p></td>
<td><p>‘m’</p></td>
<td><p>1101</p></td>
<td><p>‘n’</p></td>
<td><p>1110</p></td>
<td><p>‘o’</p></td>
<td><p>1111</p></td>
<td><p>‘p’</p></td>
</tr>
<tr class="row-even"><td><p>10000</p></td>
<td><p>‘q’</p></td>
<td><p>10001</p></td>
<td><p>‘r’</p></td>
<td><p>10010</p></td>
<td><p>‘s’</p></td>
<td><p>10011</p></td>
<td><p>‘t’</p></td>
</tr>
<tr class="row-odd"><td><p>10100</p></td>
<td><p>‘u’</p></td>
<td><p>10101</p></td>
<td><p>‘v’</p></td>
<td><p>10110</p></td>
<td><p>‘w’</p></td>
<td><p>10111</p></td>
<td><p>‘x’</p></td>
</tr>
<tr class="row-even"><td><p>11000</p></td>
<td><p>‘y’</p></td>
<td><p>11001</p></td>
<td><p>‘z’</p></td>
<td><p>11010</p></td>
<td><p>‘A’</p></td>
<td><p>11011</p></td>
<td><p>‘B’</p></td>
</tr>
<tr class="row-odd"><td><p>11100</p></td>
<td><p>‘C’</p></td>
<td><p>11101</p></td>
<td><p>‘D’</p></td>
<td><p>11110</p></td>
<td><p>‘E’</p></td>
<td><p>11111</p></td>
<td><p>‘F’</p></td>
</tr>
<tr class="row-even"><td><p>100000</p></td>
<td><p>‘G’</p></td>
<td><p>100001</p></td>
<td><p>‘H’</p></td>
<td><p>100010</p></td>
<td><p>‘I’</p></td>
<td><p>100011</p></td>
<td><p>‘J’</p></td>
</tr>
<tr class="row-odd"><td><p>100100</p></td>
<td><p>‘K’</p></td>
<td><p>100101</p></td>
<td><p>‘L’</p></td>
<td><p>100110</p></td>
<td><p>‘M’</p></td>
<td><p>100111</p></td>
<td><p>‘N’</p></td>
</tr>
<tr class="row-even"><td><p>101000</p></td>
<td><p>‘O’</p></td>
<td><p>101001</p></td>
<td><p>‘P’</p></td>
<td><p>101010</p></td>
<td><p>‘Q’</p></td>
<td><p>101011</p></td>
<td><p>‘R’</p></td>
</tr>
<tr class="row-odd"><td><p>101100</p></td>
<td><p>‘S’</p></td>
<td><p>101101</p></td>
<td><p>‘T’</p></td>
<td><p>101110</p></td>
<td><p>‘U’</p></td>
<td><p>101111</p></td>
<td><p>‘V’</p></td>
</tr>
<tr class="row-even"><td><p>110000</p></td>
<td><p>‘W’</p></td>
<td><p>110001</p></td>
<td><p>‘X’</p></td>
<td><p>110010</p></td>
<td><p>‘Y’</p></td>
<td><p>110011</p></td>
<td><p>‘Z’</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>Bu tabloda toplam <cite>52</cite> karakter ile <cite>52</cite> sayı birbiriyle eşleştirilmiş durumda.
Mesela vericiden <cite>0</cite> sinyali geldiğinde bu tabloya göre biz bunu ‘a’ harfi
olarak yorumlayacağız. Örneğin karşı tarafa ‘python’ mesajını iletmek için
sırasıyla şu sinyalleri göndereceğiz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mi">1111</span><span class="p">,</span> <span class="mi">11000</span><span class="p">,</span> <span class="mi">10011</span><span class="p">,</span> <span class="mi">111</span><span class="p">,</span> <span class="mi">1110</span><span class="p">,</span> <span class="mi">1101</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, elimizdeki 127 sayının 52’sini harflere ayırdık ve elimizde 75
tane daha sayı kaldı. Eğer isterseniz geri kalan bu sayıları da birtakım başka
karakterlere veya işaretlere ayırarak, alıcı ve verici arasındaki bütün
iletişimin eksiksiz bir şekilde gerçekleşmesini sağlayabilirsiniz. Örneğin şöyle
bir tablo oluşturabilirsiniz:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 11%" />
<col style="width: 13%" />
<col style="width: 12%" />
<col style="width: 13%" />
<col style="width: 12%" />
<col style="width: 14%" />
<col style="width: 12%" />
<col style="width: 13%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
<th class="head"><p>sayı</p></th>
<th class="head"><p>karakter</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>0</p></td>
<td><p>‘0’</p></td>
<td><p>1</p></td>
<td><p>‘1’</p></td>
<td><p>10</p></td>
<td><p>‘2’</p></td>
<td><p>11</p></td>
<td><p>‘3’</p></td>
</tr>
<tr class="row-odd"><td><p>100</p></td>
<td><p>‘4’</p></td>
<td><p>101</p></td>
<td><p>‘5’</p></td>
<td><p>110</p></td>
<td><p>‘6’</p></td>
<td><p>111</p></td>
<td><p>‘7’</p></td>
</tr>
<tr class="row-even"><td><p>1000</p></td>
<td><p>‘8’</p></td>
<td><p>1001</p></td>
<td><p>‘9’</p></td>
<td><p>1010</p></td>
<td><p>‘a’</p></td>
<td><p>1011</p></td>
<td><p>‘b’</p></td>
</tr>
<tr class="row-odd"><td><p>1100</p></td>
<td><p>‘c’</p></td>
<td><p>1101</p></td>
<td><p>‘d’</p></td>
<td><p>1110</p></td>
<td><p>‘e’</p></td>
<td><p>1111</p></td>
<td><p>‘f’</p></td>
</tr>
<tr class="row-even"><td><p>10000</p></td>
<td><p>‘g’</p></td>
<td><p>10001</p></td>
<td><p>‘h’</p></td>
<td><p>10010</p></td>
<td><p>‘i’</p></td>
<td><p>10011</p></td>
<td><p>‘j’</p></td>
</tr>
<tr class="row-odd"><td><p>10100</p></td>
<td><p>‘k’</p></td>
<td><p>10101</p></td>
<td><p>‘l’</p></td>
<td><p>10110</p></td>
<td><p>‘m’</p></td>
<td><p>10111</p></td>
<td><p>‘n’</p></td>
</tr>
<tr class="row-even"><td><p>11000</p></td>
<td><p>‘o’</p></td>
<td><p>11001</p></td>
<td><p>‘p’</p></td>
<td><p>11010</p></td>
<td><p>‘q’</p></td>
<td><p>11011</p></td>
<td><p>‘r’</p></td>
</tr>
<tr class="row-odd"><td><p>11100</p></td>
<td><p>‘s’</p></td>
<td><p>11101</p></td>
<td><p>‘t’</p></td>
<td><p>11110</p></td>
<td><p>‘u’</p></td>
<td><p>11111</p></td>
<td><p>‘v’</p></td>
</tr>
<tr class="row-even"><td><p>100000</p></td>
<td><p>‘w’</p></td>
<td><p>100001</p></td>
<td><p>‘x’</p></td>
<td><p>100010</p></td>
<td><p>‘y’</p></td>
<td><p>100011</p></td>
<td><p>‘z’</p></td>
</tr>
<tr class="row-odd"><td><p>100100</p></td>
<td><p>‘A’</p></td>
<td><p>100101</p></td>
<td><p>‘B’</p></td>
<td><p>100110</p></td>
<td><p>‘C’</p></td>
<td><p>100111</p></td>
<td><p>‘D’</p></td>
</tr>
<tr class="row-even"><td><p>101000</p></td>
<td><p>‘E’</p></td>
<td><p>101001</p></td>
<td><p>‘F’</p></td>
<td><p>101010</p></td>
<td><p>‘G’</p></td>
<td><p>101011</p></td>
<td><p>‘H’</p></td>
</tr>
<tr class="row-odd"><td><p>101100</p></td>
<td><p>‘I’</p></td>
<td><p>101101</p></td>
<td><p>‘J’</p></td>
<td><p>101110</p></td>
<td><p>‘K’</p></td>
<td><p>101111</p></td>
<td><p>‘L’</p></td>
</tr>
<tr class="row-even"><td><p>110000</p></td>
<td><p>‘M’</p></td>
<td><p>110001</p></td>
<td><p>‘N’</p></td>
<td><p>110010</p></td>
<td><p>‘O’</p></td>
<td><p>110011</p></td>
<td><p>‘P’</p></td>
</tr>
<tr class="row-odd"><td><p>110100</p></td>
<td><p>‘Q’</p></td>
<td><p>110101</p></td>
<td><p>‘R’</p></td>
<td><p>110110</p></td>
<td><p>‘S’</p></td>
<td><p>110111</p></td>
<td><p>‘T’</p></td>
</tr>
<tr class="row-even"><td><p>111000</p></td>
<td><p>‘U’</p></td>
<td><p>111001</p></td>
<td><p>‘V’</p></td>
<td><p>111010</p></td>
<td><p>‘W’</p></td>
<td><p>111011</p></td>
<td><p>‘X’</p></td>
</tr>
<tr class="row-odd"><td><p>111100</p></td>
<td><p>‘Y’</p></td>
<td><p>111101</p></td>
<td><p>‘Z’</p></td>
<td><p>111110</p></td>
<td><p>‘!’</p></td>
<td><p>111111</p></td>
<td><p>‘”’</p></td>
</tr>
<tr class="row-even"><td><p>1000000</p></td>
<td><p>‘#’</p></td>
<td><p>1000001</p></td>
<td><p>‘$’</p></td>
<td><p>1000010</p></td>
<td><p>‘%’</p></td>
<td><p>1000011</p></td>
<td><p>‘&’</p></td>
</tr>
<tr class="row-odd"><td><p>1000100</p></td>
<td><p>“’”’</p></td>
<td><p>1000101</p></td>
<td><p>‘’(‘</p></td>
<td><p>1000110</p></td>
<td><p>‘)’</p></td>
<td><p>1000111</p></td>
<td><p>‘*’</p></td>
</tr>
<tr class="row-even"><td><p>1001000</p></td>
<td><p>‘+’</p></td>
<td><p>1001001</p></td>
<td><p>‘,’</p></td>
<td><p>1001010</p></td>
<td><p>‘-‘</p></td>
<td><p>1001011</p></td>
<td><p>‘.’</p></td>
</tr>
<tr class="row-odd"><td><p>1001100</p></td>
<td><p>‘/’</p></td>
<td><p>1001101</p></td>
<td><p>‘:’</p></td>
<td><p>1001110</p></td>
<td><p>‘;’</p></td>
<td><p>1001111</p></td>
<td><p>‘<’</p></td>
</tr>
<tr class="row-even"><td><p>1010000</p></td>
<td><p>‘=’</p></td>
<td><p>1010001</p></td>
<td><p>‘>’</p></td>
<td><p>1010010</p></td>
<td><p>‘?’</p></td>
<td><p>1010011</p></td>
<td><p>‘@’</p></td>
</tr>
<tr class="row-odd"><td><p>1010100</p></td>
<td><p>‘[‘</p></td>
<td><p>1010101</p></td>
<td><p>‘\’</p></td>
<td><p>1010110</p></td>
<td><p>‘]’</p></td>
<td><p>1010111</p></td>
<td><p>‘^’</p></td>
</tr>
<tr class="row-even"><td><p>1011000</p></td>
<td><p>‘_’</p></td>
<td><p>1011001</p></td>
<td><p>‘’</p></td>
<td><p>1011010</p></td>
<td><p>‘{‘</p></td>
<td><p>1011011</p></td>
<td><p>‘’</p></td>
</tr>
<tr class="row-odd"><td><p>1011100</p></td>
<td><p>‘}’</p></td>
<td><p>1011101</p></td>
<td><p>‘~’</p></td>
<td><p>1011110</p></td>
<td><p>‘ ‘</p></td>
<td><p>1011111</p></td>
<td><p>‘t’</p></td>
</tr>
<tr class="row-even"><td><p>1100000</p></td>
<td><p>‘n’</p></td>
<td><p>1100001</p></td>
<td><p>‘r’</p></td>
<td><p>1100010</p></td>
<td><p>‘x0b’</p></td>
<td><p>1100011</p></td>
<td><p>‘x0c’</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>Aslında yukarıda anlattığımız sayı-karakter eşleştirme işleminin, ta en başta
yaptığımız sinyal-sayı eşleştirme işlemiyle mantık olarak aynı olduğuna
dikkatinizi çekmek isterim.</p>
<p>Sistemimizi tasarlarken, iletilen iki farklı sinyali <cite>0</cite> ve <cite>1</cite> sayıları ile
temsil etmiştik. Yani bu sinyalleri <cite>0</cite> ve <cite>1</cite>’ler halinde kodlamıştık. Şimdi
ise bu sayıları karakterlere dönüştürüyoruz. Yani yine bir kodlama (<em>encoding</em>)
işlemi gerçekleştiriyoruz.</p>
<p>Baştan beri anlattığımız bu küçük iletişim modeli, sayıların ve karakterlerin
nasıl temsil edilebileceği konusunda bize epey bilgi verdi. Bu arada, yukarıda
anlattığımız sistem her ne kadar hayali de olsa, bu sisteme benzeyen sistemlerin
tarih boyunca kullanıldığını ve hatta bugün kullandığımız bütün iletişim
sistemlerinin de yukarıda anlattığımız temel üzerinde şekillendiğini belirtmeden
geçmeyelim. Örneğin telgraf iletişiminde kullanılan Mors alfabesi yukarıda tarif
ettiğimiz sisteme çok benzer. Mors alfabesi, kısa ve uzun sinyallerle
karakterlerin eşleştirilmesi yoluyla oluşturulmuştur. Mors sisteminde farklı
sinyaller (tıpkı bizim sistemimizde olduğu gibi) farklı harflere karşılık gelir:</p>
<blockquote>
<div><a class="reference external image-reference" href="_images/misc/morse.png"><img alt="_images/morse.png" class="align-center" src="_images/morse.png" style="width: 400px; height: 400px;" /></a>
</div></blockquote>
<p>Mors alfabesinin bizim oluşturduğumuz sisteme mantık olarak ne kadar benzediğine
dikkat edin. Bu sistemin benzeri biraz sonra göstereceğimiz gibi, modern
bilgisayarlarda da kullanılmaktadır.</p>
</div>
</div>
<div class='glyph'><a href='https://yazbel.com'>♣</a></div>
<div class='extrarelbar'>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="karakter_kodlama.html" title="Karakter Kodlama (Character Encoding)"
>sonraki</a></li>
<li class="right" >
<a href="ikili_dosyalar.html" title="İkili (Binary) Dosyalar"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Basit bir İletişim Modeli</a></li>
</ul>
</div> </div>
<div class='addcomment'>Yorumlar</div>
<div class='how-to-use'>
<h3>Önemli Not</h3>
Eğer yazdığınız yorum içinde kod kullanacaksanız, kodlarınızı
<span class='tag'><pre><code></span> etiketleri içine alın. Örneğin:
<pre>
<span class='tag'><pre><code class="python"></span>
<span class='keyword'>print</span>(<span class='string'>"Merhaba Dünya!"</span>)
<span class='tag'></code></pre></span>
</pre>
</div>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES * * */
var disqus_shortname = 'istihza';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4eca48eb2d83faf9" async="async"></script>
<div class="clearer"></div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="karakter_kodlama.html" title="Karakter Kodlama (Character Encoding)"
>sonraki</a></li>
<li class="right" >
<a href="ikili_dosyalar.html" title="İkili (Binary) Dosyalar"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Basit bir İletişim Modeli</a></li>
</ul>
</div>
<div class="footer">
© Copyright 2007-2020, Fırat Özgül | <a href="https://yazbel.com">yazbel.com</a>.
Son güncelleme: 08.08.2020.
<a href="http://sphinx-doc.org/">Sphinx</a> 3.2.0 kullanılarak oluşturuldu.
<br>
<br>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img
alt="Creative Commons License" style="border-width:0"
src="https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />
<br>
</div>
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=10396326;
var sc_invisible=1;
var sc_security="fb5cd679";
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
</script>
<noscript><div class="statcounter"><a title="hit counter"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/10396326/0/fb5cd679/1/"
alt="hit counter"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>