تالار گفتمان مانشت
فصل اول پوران( بیت توازن) - نسخه‌ی قابل چاپ

فصل اول پوران( بیت توازن) - aria - 23 مرداد ۱۳۹۴ ۰۲:۱۰ ب.ظ

دوستان کسی می تونه این مثال را توضیح بده
[attachment=19227]

RE: فصل اول پوران( بیت توازن) - amiriahmad - 29 مرداد ۱۳۹۴ ۰۹:۴۴ ب.ظ

فاصله در کد همینگ برابر ۳ است. یعنی می‌توان دو خطا را تشخیص داد یا یک خطا را تصحیح کرد.(به کلمه "یا" دقت کنید، نمی‌توان این دو کار را همزمان انجام داد). اگر مقدار d8d4d2d1 برابر صفر بود یعنی خطایی رخ نداده است ( یا بیش از دو خطا رخ داده است که متوجه آن نخواهیم شد) و اگر مقدار آن مخالف صفر باشد یک یا دو خطا رخ داده است. اگر فرض کنیم یک خطا رخ داده است، مقدار d8d4d2d1 شماره بیت خطا را نشان می‌دهد (خطا قابل تصحیح است) و اگر فرض کنیم دو خطا رخ داده این مقدار معنای خاصی ندارد و فقط می‌دانیم دو خطا رخ داده است (خطا فقط قابل تشخیص است).
حال اگر یک بیت توازن زوج اضافه کنیم می‌توانیم در صورت بروز خطا بفهمیم دقیقا یک بیت خطا داریم یا دو بیت خطا و تصحیح یک بیت خطا و تشخیص دو بیت خطا با هم انجام می‌شود. می‌دانیم اگر خطایی رخ ندهد مقدار بیت توازن زوج، صفر است و اگر یک خطا رخ دهد مقدار آن یک می شود و اگر دو خطا رخ دهد، مقدارش دوباره صفر می‌شود.
بنابراین
اگر مقدار d8d4d2d1 صفر بود و بیت توازن نیز صفر بود، خطایی رخ نداده است.
اگر مقدار d8d4d2d1 مخالف صفر بود و بیت توازن صفر بود، در ۱۲ بیت اول خطایی رخ نداده است و مقدار خود بیت توازن دچار خطا شده است.
اگر مقدار d8d4d2d1 مخالف صفر بود و بیت توازن نیز مخالف صفر بود، یعنی دقیقا یک خطا رخ داده است که شماره بیت آن همان مقدار d8d4d2d1 است، پس خطا قابل تصحیح است.
اگر مقدار d8d4d2d1 مخالف صفر بود و بیت توازن صفر بود، این یعنی دقیقا دو بیت خطا رخ داده است که فقط قابل تشخیص هستند.