موضوع مقاله: بایت | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # بایت | مقدمه: از نظر تاریخی، بایت تعداد بیت‌هایی بود که برای کدگذاری یک کاراکتر متنی در رایانه استفاده می‌شد و به همین دلیل کوچک‌ترین واحد قابل آدرس‌دهی حافظه در بسیاری از معماری‌های رایانه به‌شمار می‌رفت. | ## بخش 1: بایت | همچنین در بسیاری از زبان‌های برنامه‌نویسی، یک نوع داده صحیحی با این نام وجود دارد. یک بایت معادل یک نویسه است و در پردازنده‌های ۸ بیتی برابر با طول ثبات‌ها، تعداد بیت‌های قابل محاسبه در واحد محاسبه و منطق پردازنده، تعداد خطوط مسیر داده یا تعداد خطوط مسیر آدرس است. برای تمایز تعریف متداول ۸ بیتی از بایت‌هایی با اندازه دلخواه، در مستندات شبکه (مانند پروتکل اینترنت)، یک بایت ۸ بیتی را اکتت خطاب می‌کنند. در یک اکتت، این بیت‌ها معمولاً بسته به روش شماره‌گذاری بیت، از ۰ تا ۷ یا به طور معکوس، از ۷ تا ۰ شماره‌گذاری می‌شوند. اندازه بایت در گذشته وابسته به سخت‌افزار بود و استاندارد قطعی‌ای وجود نداشت که اندازه را الزاماً مشخص کند و اندازه‌هایی بین ۱ تا ۴۸ بیت به کار رفته‌اند. در اوایل سیستم‌های کدگذاری، کد نویسه شش‌بیتی مکرراً استفاده می‌شده و رایانه‌هایی که از بایت‌های شش‌بیتی و ۹ بیتی استفاده می‌کردند در دهه ۱۹۶۰ بسیار رایج بودند. این سیستم‌ها غالباً کلمات حافظه‌ای با اندازه ۱۲، ۱۸، ۲۴، ۳۰، ۳۶، ۴۸ یا ۶۰ بیت داشتند که متناظر با ۲، ۳، ۴، ۵، ۶، ۸ یا ۱۰ بایت شش‌بیتی بودند و گاهاً در سیستم‌های قدیمی تا قرن بیست و یک نیز دوام آوردند. در آن زمان و پیش از آنکه اصطلاح ”بایت“ فراگیر شود، دسته‌بندی بیت‌ها در جریان دستورها اغلب ”هجا“ یا ”slab“ نامیده می‌شد. استاندارد مرسوم امروزی با اندازه هشت بیت، که در استاندارد ISO/IEC 2382-1:1993 نیز مستند شده، و یک روش توان دو است که بسیار آسان بوده و امکان نمایش مقادیر دودویی از ۰ تا ۲۵۵ را برای یک بایت فراهم می‌کند؛ زیرا ۲ به توان ۸ برابر ۲۵۶ است. بسیاری از کاربردها از اطلاعاتی استفاده می‌کنند که در هشت بیت یا کمتر قابل ارائه و نمایش هستند و طراحان پردازنده نیز معمولاً محصولاتشان برای همین نوع کاربرد بهینه‌سازی می‌کنند. محبوبیت معماری‌های رایانه‌ای تجاری عمده در همه‌گیر شدن بایت ۸ بیتی سهیم بوده‌است. معماری‌های مدرن معمولاً از کلمه‌های ۳۲ بیتی یا ۶۴ بیتی استفاده می‌کنند که هرکدام به ترتیب از چهار یا هشت بایت ساخته شده‌اند. نشان یکای بایت، حرف بزرگ B است که توسط کمیسیون بین‌المللی الکتروتکنیک (IEC) و انجمن مهندسان برق و الکترونیک (IEEE) تعیین شده‌است. در سطح بین‌المللی، واژه «اکتت» به‌صراحت، دنباله‌ای هشت‌بیتی را تعریف می‌کند و بدین ترتیب، ابهام واژه «بایت» را از میان می‌برد. نشان اکتت، یعنی 'o'، همچنین ابهام نماد 'B' را که می‌تواند به بایت یا بل اشاره کند، برطرف می‌کند. ریشه‌شناسی و تاریخچه وِرنِر بوخ‌هُلتس اصطلاح بایت را در ژوئن ۱۹۵۶ در مرحله اولیه طراحی رایانه آی‌بی‌ام ۷۰۳۰ ابداع کرد. این رایانه دارای آدرس‌دهی در سطح بیت و دستورهایی با طول میدان متغیر بود که اندازه بایت در خود دستور رمزگذاری می‌شد. پارامتر دیگری از خاستگاه اصطلاح بایت برای گروه‌های بیتی کوچک‌تر از اندازه کلمه رایانه (و به‌طور مشخص گروه‌های چهاربیتی) در سوابق مربوط به لویی جی. او مدعی بود این اصطلاح را طی سال‌های ۱۹۵۶ یا ۱۹۵۷ و زمانی که همراه با ژول شوارتز و دیک بیلر روی یک سامانه پدافند هوایی با نام سِیج در آزمایشگاه لینکلن ام‌آی‌تی کار می‌کرد به کار برده است. بعدها، زبان جوویال که توسط شوارتز نوشته شده بود، این اصطلاح را واقعاً به کار گرفت، اما خود او صرفاً بصورت مبهم تصور میکند که این اصطلاح از AN/FSQ-31 به عاریه گرفته شده است. رایانه‌های اولیه از انواع گوناگونی از نمایش‌های چهاربیتی BCD و کدهای شش‌بیتی برای الگوهای گرافیکی قابل چاپ استفاده می‌کردند که در نیروی زمینی ایالات متحده (فیل‌دیتا) و نیروی دریایی ایالات متحده مرسوم بود. در سال ۱۹۶۳، این مجموعه‌ها به کد هفت‌بیتی‌ای گسترش یافت که با نام اَسکی و به‌عنوان استاندارد پردازش اطلاعات فدرال شناخته می‌شد و جایگزین کدهای تله‌پرینترِ ناسازگاری شد که شاخه‌های مختلف دولت ایالات متحده و دانشگاه‌ها در دهه ۱۹۶۰ به کار می‌بردند. اَسکی تمایز حروف بزرگ و کوچک را به همراه مجموعه‌ای از کاراکترهای کنترلی فراهم آورد تا هم برای انتقال زبان نوشتاری مناسب باشد و هم عملکرد دستگاه‌های چاپ مانند رفتن به صفحه بعد یا سطر بعد، و نیز کنترل فیزیکی یا منطقی جریان داده در رسانه انتقال را فراهم کند. در اوایل دهه ۱۹۶۰ و همزمان با فعالیت در زمینه استانداردسازی اَسکی، آی‌بی‌ام در مجموعه محصولات سیستم/۳۶۰ خود، کد EBCDIC را معرفی کرد که گسترشی از نمایش‌های شش‌بیتی BCDIC بود که پیش‌تر در کارت‌های منگنه‌شده استفاده می‌شد. | ## بخش 2: بایت | رواج سامانه سیستم/۳۶۰ سبب شد اندازه ذخیره‌سازی هشت‌بیتی تقریباً همه‌جا پذیرفته شود، اگرچه در جزئیات، طرح‌های کدگذاری EBCDIC و اَسکی با هم تفاوت دارند. در اوایل دهه ۱۹۶۰، ای‌تی‌اندتی در خطوط ترانک راه دور از تلفن دیجیتال استفاده کرد و در این خطوط از کدگذاری μ-law با اندازه هشت بیت بهره برد. در جلد اول کتاب هنر برنامه‌نویسی رایانه (که نخستین‌بار در سال ۱۹۶۸ منتشر شد)، دانلد کنوت از اصطلاح بایت در رایانه فرضی MIX برای اشاره به واحدی استفاده می‌کند که «شامل مقدار نامشخصی از اطلاعات ... او توضیح می‌دهد که «از حدود سال ۱۹۷۵ به بعد، واژه بایت به معنای توالی‌ای دقیقاً مشتمل بر هشت رقم دودویی درآمده است... هنگامی که در ارتباط با MIX از بایت سخن می‌گوییم، خود را به مفهوم پیشین این واژه محدود می‌کنیم و به روزگاری بازمی‌گردیم که بایت‌ها هنوز استاندارد نشده بودند». پیشرفت ریزپردازنده‌های هشت‌بیتی در دهه ۱۹۷۰ باعث محبوبیت این اندازه ذخیره‌سازی شد. مقدار چهاربیتی معمولاً نیبل نامیده می‌شود که به‌سادگی با یک رقم هگزادسیمال نمایش داده می‌شود. از نظر تاریخی، دست‌کم در اروپای غربی از اصطلاح‌های octad یا octade هم برای اشاره به هشت بیت استفاده می‌شد؛ اما امروزه دیگر چندان رایج نیستند. نماد یکا نماد یکا برای بایت در ایزو/آی‌ئی‌سی ۸۰۰۰۰-۱۳، آی‌تریپل‌ئی ۱۵۴۱ و قالب تبادل متریک به‌صورت حرف بزرگ B تعیین شده است. بل یک یکای نسبت توان لگاریتمی است که به نام الکساندر گراهام بل نام‌گذاری شده و این موضوع با مشخصات IEC در تضاد است. این یکا عمدتاً در کسری از مبانی دهدهی آن، یعنی دسی‌بل (dB)، برای اندازه‌گیری قدرت سیگنال و تراز فشار صوت به‌کار می‌رود. در حالی که واحد یک‌دهمِ بایت، decibyte، و دیگر کسرهای آن، تنها در یکاهای مشتق‌شده مانند نرخ‌های انتقال داده استفاده می‌شوند. حرف کوچک o برای octet در ایزو/آی‌ئی‌سی ۸۰۰۰۰-۱۳ به‌عنوان نماد این یکا تعریف شده و معمولاً در زبان‌هایی مانند فرانسوی و رومانیایی استفاده می‌شود. این نماد می‌تواند با پیشوندهای متریک برای بیان مضرب‌ها ترکیب شود؛ برای نمونه ko و Mo. چند-یکایی‌های بایت بیش از یک سامانه برای تعریف مضارب یکاهای مبتنی بر بایت وجود دارد. برخی سامانه‌ها بر پایه توان‌های ۱۰ شکل گرفته‌اند و از دستگاه بین‌المللی یکاها (SI) پیروی می‌کنند که برای نمونه، پیشوند «کیلو» را برابر با ۱۰۰۰ (۱۰ به توان ۳) تعریف می‌کند. در سامانه‌هایی که بر پایه توان‌های ۱۰ هستند، از پیشوندهای استاندارد SI (مانند «کیلو»، «مگا»، «گیگا» و ...) و نمادهای متناظر (k، M، G و ...) استفاده می‌شود. درحالی‌که تفاوت میان تفسیر ده‌دهی و دودویی برای کیلوبایت نسبتاً کم است (حدود ۲٪ کمتر از کیبی‌بایت)، با افزایش اندازه واحدها، انحراف میان این دو بیشتر می‌شود (این اختلاف نسبی در هر سه مرتبه بزرگی، ۲٫۴٪ افزایش می‌یابد). برای نمونه، یک ترابایت بر پایه توان‌های ۱۰ حدوداً ۹٪ کوچک‌تر از یک تبی‌بایت بر پایه توان‌های ۲ است. سیستم‌عامل‌هایی که از این تعریف استفاده می‌کنند عبارت‌اند از مک‌اواس، آی‌اواس، اوبونتو و دبیان. این شیوه با دیگر کاربردهای پیشوندهای SI در رایانش، مانند سرعت ساعت پردازنده یا اندازه‌گیری توان عملیاتی شناور، نیز همخوانی دارد. یکاهای بر پایه توان‌های ۲ سامانه‌ای از واحدها بر پایه توان‌های ۲ که در آن ۱ کیبی‌بایت (KiB) برابر با ۱٬۰۲۴ (یعنی ۲^۱۰) بایت است، در استاندارد بین‌المللی آی‌ئی‌سی ۸۰۰۰۰-۱۳ تعریف شده و توسط نهادهای ملی و بین‌المللی استاندارد (BIPM، IEC، NIST) پشتیبانی می‌شود. در این استاندارد نیز هشت مضرب یکا، تا میزان یک یوبی‌بایت (YiB) تعریف شده که برابر با ۱۰۲۴^۸ بایت است. و ۱ «مگابایت» (MB) برابر با ۱۰۲۴^۲ بایت و ۱ «گیگابایت» (GB) برابر با ۱۰۲۴^۳ بایت است که در استاندارد JEDEC در دهه ۱۹۹۰ ذکر شده بود. | ## بخش 3: بایت | این استاندارد تنها سه مضرب نخست (تا GB) یکاها را نام برده و به TB و مقادیر بزرگ‌تر اشاره‌ای نکرده است. برای کاربرد در بیان ظرفیت ذخیره‌سازی، قرارداد مرسوم تا نسخه «Mac OS X 10.5 لئوپارد» در مک‌اواس و نسخه ۱۰ در آی‌اواس استفاده می‌شد و پس از آن به واحدهای بر پایه توان‌های ۱۰ تغییر کرد. واحدهای محلی فروشندگان گوناگون رایانه، واژه‌های مختلفی را برای حجم‌های متفاوت داده معرفی کرده‌اند که گاه حتی در یک شرکت واحد هم ممکن است اندازه‌های یک واژه متفاوت باشد. استفاده از پیشوند متریک «کیلو» برای مضارب دودویی به‌دلیل تقریب عدد ۱۰۲۴ به ۱۰۰۰ رواج یافت. این تعریف در دهه‌های آغازین رایانه خانگی متداول شد و محصولاتی مانند فلاپی ۵٫۲۵ اینچی DD شرکت تندِن (با ظرفیت بایت) با استفاده از قرارداد ۱۰۲۴ بایت، تحت عنوان «۳۶۰ کیلوبایت» تبلیغ می‌شدند. فلاپی ۵٫۲۵ اینچی SA-400 شوگارت دارای ظرفیت ۱۰۹٬۳۷۵ بایت فرمت‌نشده بود و «۱۱۰ کیلوبایت» (با استفاده از قرارداد ۱۰۰۰ بایت) تبلیغ می‌شد. همچنین فلاپی ۸ اینچی RX01 دِک (محصول ۱۹۷۵) دارای ۲۵۶٬۲۵۶ بایت فرمت‌شده بود و تحت عنوان «۲۵۶k» تبلیغ می‌شد. برخی دستگاه‌ها با ترکیبی از دو تعریف آگهی می‌شدند: معروف‌ترین آن‌ها فلاپی‌های ۱٫۴۴ مگابایتی است که در واقع ۱٬۴۴۰ کیبی‌بایت (برابر ۱٫۴۱ مبی‌بایت یا ۱٫۴۷ مگابایت ده‌دهی) ظرفیت دارند. در سال ۱۹۹۵، «کمیته بین‌بخشی نام‌گذاری و نمادهای» آیوپاک برای حل این ابهام، مجموعه‌ای از پیشوندهای دودویی را برای مضارب ۱۰۲۴ پیشنهاد کرد. دعاوی قانونی علیه استانداردها شکایت‌های حقوقی مرتبط با ادعای سردرگمی مصرف‌کنندگان بر سر تعریف دودویی و ده‌دهی مضارب بایت، عموماً به سود تولیدکنندگان پایان یافته است. دادگاه‌ها اعلام کرده‌اند که تعریف قانونی «گیگابایت» یا «GB» برابر با ۱ میلیارد بایت (۱۰^۹) بر پایه ده‌دهی است، نه دودویی (۲^۳۰ یعنی بایت). به‌طور مشخص، دادگاه منطقه‌ای ایالات متحده در حوزه شمالی کالیفرنیا حکم کرده است که «کنگره ایالات متحده، تعریف ده‌دهی گیگابایت را برای اهداف تجارت در ایالات متحده ‘ترجیحی’ قلمداد کرده است [...] قوه مقننه کالیفرنیا نیز به همین شکل سامانه ده‌دهی را برای تمام ‘تراکنش‌های این ایالت’ پذیرفته است». زبان های برنامه نویسی C و C++ بایت را به عنوان "واحد آدرس‌پذیری از ذخیره‌سازی داده‌ها که برای نگهداری هر یک از اعضای مجموعه کاراکترهای اصلی محیط اجرا به اندازه کافی بزرگ است" تعریف می‌کنند (بند 3.6 از استاندارد C). در استاندارد C به اجبار، نوع داده انتگرال char بدون علامت باید حداقل 256 مقدار مختلف داشته باشد و حداقل با هشت بیت نمایش داده شود (بند 5.2.4.2.1). پیاده‌سازی‌های مختلف زبان‌های برنامه نویسی C و C++ ، اجازه استفاده از مقدار 8، 9، 16، 32 یا 36 بیت را برای ذخیره‌سازی یک بایت محفوظ می‌دارند. علاوه بر این، استانداردهای C و C++ ایجاب می‌کنند که بین دو بایت هیچ فاصله‌ای وجود نداشته باشد. در زبان های برنامه نویسی دات‌نت، مانند C#، بایت را به عنوان یک نوع داده بدون علامت، و sbyte را به عنوان یک نوع داده علامت‌دار تعریف می‌کنند که به ترتیب مقادیر از 0 تا 255 و 128- تا 127 را نگه می‌دارند. در سیستم‌های انتقال داده، بایت به‌عنوان دنباله‌ای از بیت‌ها در جریان داده سریال استفاده می‌شود که کوچک‌ترین واحد متمایز داده را نشان می‌دهد. برای ارتباط ناهمزمان، یک واحد انتقال کامل معمولاً علاوه بر این شامل یک بیت شروع، 1 یا 2 بیت توقف، و احتمالاً یک بیت برابری است ، و بنابراین اندازه آن ممکن است از هفت تا دوازده بیت برای پنج تا هشت بیت داده واقعی متفاوت باشد. برای ارتباط همزمان، بررسی خطا معمولاً از بایت ها در انتهای یک فریم استفاده می‌کند. اما، تعریف دوم مبتنی بر دستگاه اعداد دهدهی است و از توان‌های ۱۰ برای بیان حجم داده‌های دیجیتال استفاده می‌کند. بدین ترتیب، برای مثال پیشین، کیلوبایت معادل ۱۰۳ و مگابایت برابر با ۱۰۶ خواهد بود. | ## جمع‌بندی | بدین صورت که برای بیان گنجایش حافظه دیسک سخت و حجم داده‌های انتقال در مخابرات و شبکه‌های رایانه‌ای از توان ۱۰ ولی برای بیان ظرفیت حافظه تصادفی رایانه از توان دودویی آن استفاده می‌شود.