آزمایشگاه آزاد؛ بدون نیاز به ورود
بیت توازن چطور خطا رو پیدا میکنه؟
گاهی داده موقع فرستادن عوض میشه. یک بیت اضافه میتونه کمک کنه بعضی تغییرها دیده بشن. اینجا خودت یک بایت رو دستکاری میکنی و نتیجهٔ بررسی توازن رو میبینی.
آزمایش رو شروع کناز عدد ۴۲ شروع کن و «بیت تغییرکرده» رو روی «بدون خطا» بذار. نمایش باینری آن ۰۰۱۰۱۰۱۰ است؛ چون سه تا یک دارد، بیت توازن زوج برابر ۱ میشود تا تعداد کل یکها زوج بماند.
آزمایشگاه در حال آماده شدنه…
حالا خودت امتحان کن
هر بار فقط یک چیز رو تغییر بده تا اثرش رو ببینی. قبل از اجرا، نتیجه رو حدس بزن.
بیت توازن را بساز
عدد داده رو روی ۴۲ بذار و تغییر بیت رو روی «بدون خطا» نگه دار. آرایش بیتهای داده و بیت توازن فرستنده رو ببین.
حدست چیه؟ چون در ۰۰۱۰۱۰۱۰ سه تا یک هست، بیت توازن برای زوجکردن تعداد کل یکها ۰ میشه یا ۱؟
توضیح نتیجه رو ببین
تعداد یکهای داده فرده، پس بیت توازن ۱ میشه؛ در کنار داده، تعداد یکها چهار تا و زوج است. چون بیتی عوض نشده، توازن درست میمونه و خطایی گزارش نمیشه.
یک بیت داده را برگردان
داده رو روی ۴۲ نگه دار و مقدار بیت تغییرکرده رو از «بدون خطا» به ۲ ببر. در شکل ببین کدوم بیت رنگ عوض میکنه و نتیجهٔ گیرنده چی میگه.
حدست چیه؟ وقتی فقط یک بیت عوض بشه، تعداد یکها زوج میمونه یا فرد میشه؟ آیا توازن خطا رو پیدا میکنه؟
توضیح نتیجه رو ببین
بیت سومِ نمایش دادهشده از ۱ به ۰ برمیگرده؛ تعداد یکهای داده از سه به دو میرسه. بیت توازن ارسالی هنوز ۱ است، پس گیرنده با محاسبهٔ دوبارهٔ توازن ناسازگاری رو تشخیص میده؛ این روش محلِ خطا رو اصلاح نمیکنه.
داده عوض میشود، توازن هنوز درست است
بیت تغییرکرده رو دوباره روی «بدون خطا» بذار. عدد داده رو از ۴۲ به ۴۳ تغییر بده و بیت توازن فرستنده رو مقایسه کن.
حدست چیه؟ آیا بیت توازن برای این داده هم ۱ میمونه؟ نتیجهٔ بررسی باید خطا نشون بده؟
توضیح نتیجه رو ببین
عدد ۴۳ نمایش ۰۰۱۰۱۰۱۱ و چهار بیتِ یک دارد، پس بیت توازن آن ۰ میشود. چون دادهٔ تازه با بیت توازن خودش فرستاده شده، بررسی درست است و خطایی گزارش نمیشود؛ عوضشدن خود داده بهتنهایی خطای انتقال نیست.
پشت این حرکت چه خبره؟
توازن زوج یعنی چه؟
P = (sum(b_i)) mod 2; sum(b_i) + P = 0 mod 2
در توازن زوج، یک بیت اضافه طوری انتخاب میشه که تعداد کل بیتهای ۱ در داده بهاضافهٔ آن بیت زوج باشه. اگر داده تعداد فردی یک داشته باشه، بیت اضافه ۱ میشه؛ اگر تعدادش زوج باشه، بیت اضافه ۰ است.
تغییر فرد را میبیند، خطا را درست نمیکند
برگرداندن یک بیت، زوجبودن تعداد یکها رو به فردبودن تبدیل میکنه؛ پس بررسی میفهمه داده با توازن فرستادهشده جور درنمیآد. اما بیت توازن نمیگه کدام بیت عوض شده و خودش هم دادهٔ اصلی رو برنمیگردونه.
دو تغییر میتونن از چشم توازن رد بشن
اگر دو بیت همزمان برگردن، زوج یا فردبودن تعداد یکها دوباره به حالت اول برمیگرده. یک بیت توازن ساده ممکنه چنین خطایی رو نبیند. این ویجت فقط صفر یا یک بیتِ داده رو تغییر میده؛ برای همین نمیتونی خطای چندبیتی رو مستقیم در آن امتحان کنی.
یک بایت، هشت بیت
لغزندهٔ داده یک عدد از صفر تا ۲۵۵ میگیره و شکل، همان مقدار رو با هشت رقم دودویی نشون میده. لغزندهٔ تغییر بیت از صفر تا هفت شمارهٔ جایگاه رو مشخص میکنه؛ صفر، بیتِ چپترین جایگاه در شکل است.
سؤالت رو بپرس، جوابش رو هم ببین
وقتی توی چت دربارهٔ یک مفهوم درس میخونی، دستیار هوش مصنوعی میتونه شبیهسازی مرتبط رو کنار توضیحش نشون بده. پارامترها رو تغییر میدی و با کمک توضیح بعدی، نتیجه رو بهتر میفهمی.
شروع یادگیری با چتبرای ادامه در چت، وارد مسیر شروع و ورود میشی. نتیجهٔ این آزمایش به چت منتقل نمیشه.
نمونهٔ نمایشی از آموزش در چت
اگر توازن خطا رو پیدا کنه، خودش بیت خراب رو درست میکنه؟
نه. این روش فقط میگه توازنِ دادهٔ دریافتشده با بیت اضافهای که فرستاده شده جور نیست؛ از همین یک بیت نمیفهمه کدام جایگاه عوض شده. برای پیدا کردن و اصلاح خطا به روشهای کدگذاری دیگری نیاز داریم.
سؤالهای رایج
چرا به داده یک بیت اضافه میکنیم؟
تا گیرنده بتواند یک ویژگی ساده از داده، یعنی زوج یا فردبودن تعداد یکها، رو دوباره بررسی کنه. اگر نتیجه فرق کنه، احتمال میده در مسیر انتقال تغییری رخ داده.
چرا تغییر یک بیت شناسایی میشه؟
چون صفر و یکِ یک جایگاه جابهجا میشن و زوج یا فردبودن تعداد یکها عوض میشه. ویجت همین یک تغییر در داده رو نشان میده و ناسازگاری توازن رو گزارش میکنه.
چرا دو بیتِ تغییرکرده ممکنه پیدا نشن؟
دو بار برگرداندن بیت، زوج یا فردبودن تعداد یکها رو دوباره مثل قبل میکنه؛ پس یک بیت توازن ممکنه متوجه نشه. در این ویجت فقط یک جایگاه قابل تغییر است و این محدودیت رو باید با منطق توازن فهمید، نه با یک آزمایش دوبیتی در صفحه.
توازن میگه کدوم بیت خراب شده؟
نه؛ نتیجه فقط درستبودن توازن یا شناسایی ناسازگاری رو نشون میده. محل خطا و مقدار اصلی بیت از این بررسی بهتنهایی معلوم نمیشه.
چرا با تغییر داده از ۴۲ به ۴۳ خطا گزارش نمیشه؟
چون در آزمایش، ۴۳ دادهٔ تازهٔ فرستنده است و بیت توازن تازهای برای خودش دارد. خطا وقتی معنا دارد که داده در مسیر تغییر کند، نه وقتی فرستنده از اول دادهٔ دیگری انتخاب میکند.