سلام.
اینجا این داده ای که توی مثال گفتید ۷ بیت هست. داده ی اصلی ۴ بیت بوده که همینگ سه بیت بهش اضافه کرده و ۷ بیت برای گیرنده فرستاده. این بیت های اضافه شده کدوما هستن؟ بیت های اضافه شده توی مکان هایی با اندیس توان ۲ قرار میگیرن(اندیس از ۱ شروع میشه). یعنی توی این مثال که ۱۰۰۰۱۰۱ هست،
توی خونه ی با اندیس شماره ی ۱ :۱
خونه ی با اندیس شماره ی ۲: ۰
خونه ی با اندیس شماره ی ۳: ۰
خونه ی با اندیس شماره ی ۴ : ۰
خونه ی با اندیس شماره ی ۵: ۱
خونه ی با اندیس شماره ی ۶: ۰
خونه ی با اندیس شماره ی ۷: ۱
بیت هایی که با قرمز مشخص کردم به عدد اضافه شدند.
داده ی ۴ بیتی اولیه برابر است با: ۰۱۰۱ البته این ممکنه خطا داشته باشه.
کشف مقدار ورودی واقعی:
واسه این که بدونیم آیا داده ی اولیه رو درست گرفتیم یا خیر میایم این بیت های افزوده شده به عدد اولیه رو یه عملیاتی رووش انجام میدیم تا ببینیم ورودی درست به خروجی رسیده یا خیر. برای این کار :
h1=xor(1,3,5,7)
h2=xor(2,3,6,7)
h4=xor(4,5,6,7)
که hi نشون دهنده ی بیت همینگی هست که در اندیس iام قرار گرفته.
این xor ها رو به دست میاریم. توی اینجا:
h۱=xor(1,3,5,7)=xor(1,0,1,1)=1
h۱=xor(2,3,6,7)=xor(0,0,0,1)=1
h۱=xor(4,5,6,7)=xor(0,1,0,1)=0
h1 h2 h3 یه عدد سه بیتی هست که نشون میده کدوم بیت اشتباه فرستاده شده. اگه مقدارش ۰۰۰ باشه یعنی ورودی به درستی به خروجی منتقل شده. اینجا مقدارش ۱۱۰ هست یعنی بیت ششم اشتباه وارد شده و باید ۱ باشه جای ۰. یعنی ورودی صحیح رو الان با این سه بیتی که اضافه کردیم متوجه شدیم و خطایابی کردیم. کد صحیح ورودی ۰۱۱۱ هست.