محاسبهگر طول بیت و بایت - ابزار رایگان اندازه داده
محاسبه طول بیت و بایت برای اعداد صحیح، رشتههای هگز و متن با کدگذاریهای UTF-8، UTF-16، ASCII. ابزار آنلاین رایگان برای توسعهدهندگان، دانشمندان داده و مهندسان شبکه.
ماشینحساب طول بیت و بایت
8 بیت = 1 بایت
تصویرسازی
مستندات
ماشینحساب طول بیت و بایت چیست؟
ماشینحساب طول بیت و بایت مشخص میکند یک قطعه داده به چند بیت و بایت نیاز دارد. بیت یک رقم دودویی منفرد، ۰ یا ۱، است. بایت گروهی از ۸ بیت است. این ماشینحساب عدد صحیح، رشتهٔ شانزدهشانزدهی یا رشتهٔ متنی را میپذیرد و اندازهٔ دقیق را در هر دو واحد گزارش میکند.
این موضوع در برنامهنویسی، شبکه و ذخیرهسازی داده اهمیت دارد. ستون پایگاه داده، بستهٔ شبکه و فایل روی دیسک، همگی اندازهای دارند که با بایت سنجیده میشود و این اندازه به نحوهٔ نوشتهشدن داده بستگی دارد.
چگونه طول بیتی یک عدد صحیح را محاسبه کنیم
طول بیتی یک عدد صحیح مثبت، تعداد رقمها در شکل دودویی آن است. برای نمونه، ۲۵۵ در مبنای دودویی برابر با ۱۱۱۱۱۱۱۱ است که ۸ رقم دارد؛ بنابراین طول بیتی آن ۸ است.
فرمول: برای عدد صحیح مثبت n، طول بیتی برابر است با تعداد رقمها در نمایش n در مبنای 2. حالت خاص n = ۰ طول بیتی ۱ دارد.
اعداد صحیح منفی از مکمل دو، روش استاندارد رایانهها برای ذخیرهٔ اعداد علامتدار، استفاده میکنند. طول بیتی یک عدد صحیح منفی، کمترین تعداد بیتی است که میتواند آن را در قالب مکمل دو نگه دارد. برای نمونه، −۱۲۸ در ۸ بیت جا میگیرد (بهصورت ۱۰۰۰۰۰۰۰)، اما −۱۲۹ به ۹ بیت نیاز دارد، زیرا ۸ بیت فقط میتواند تا −۱۲۸ پایین برود.
پس از مشخصشدن طول بیتی، طول بایتی با گردکردن به بالا تا نزدیکترین بایت کامل به دست میآید:
طول بایت = ⌈طول بیت ÷ ۸⌉
نماد ⌈ ⌉ به معنای «گردکردن به بالا» است. یک مقدار ۹ بیتی همچنان به ۲ بایت کامل نیاز دارد، زیرا بایت را نمیتوان تقسیم کرد.
مثال حلشده
| عدد صحیح | طول بیت | طول بایت |
|---|---|---|
| ۰ | ۱ | ۱ |
| ۲۵۵ | ۸ | ۱ |
| ۲۵۶ | ۹ | ۲ |
| −۱۲۸ | ۸ | ۱ |
| −۱۲۹ | ۹ | ۲ |
| 18,446,744,073,709,551,615 (۲⁶⁴ − ۱) | ۶۴ | ۸ |
چگونه طول بیتی یک رشتهٔ شانزدهشانزدهی را محاسبه کنیم
هر رقم شانزدهشانزدهی (۰–۹، A–F) دقیقاً نشاندهندهٔ ۴ بیت است، زیرا ۴ بیت میتواند ۱۶ مقدار ممکن را در خود جای دهد.
فرمول: طول بیت = تعداد رقمهای شانزدهشانزدهی × ۴. طول بایت نیز مانند قبل، با تقسیم طول بیت بر ۸ و گردکردن حاصل به بالا به دست میآید.
برای نمونه، رشتهٔ شانزدهشانزدهی «FF» دارای ۲ رقم است؛ بنابراین طول بیتی آن ۲ × ۴ = ۸ بیت، یا ۱ بایت است. رشتهٔ «ABCD» دارای ۴ رقم است و در نتیجه ۱۶ بیت، یا ۲ بایت دارد. فاصلهها و دیگر نویسههای فضای خالی پیش از شمارش حذف میشوند. تعداد فردی از رقمها نیز به یک بایت کامل گرد میشود: «F» برابر با ۴ بیت است که ماشینحساب آن را ۱ بایت گزارش میکند.
چگونه طول بایتی یک رشتهٔ متنی را محاسبه کنیم
در متن، اندازه به کدگذاری نویسه، یعنی قاعدهٔ تبدیل نویسهها به بایت، بستگی دارد. این ماشینحساب از پنج کدگذاری پشتیبانی میکند:
- UTF-8: کدگذاری با طول متغیر که در سراسر وب استفاده میشود. هر نویسه ۱ تا ۴ بایت میگیرد. حروف انگلیسی ساده، رقمها و نشانهگذاری پایه، هرکدام ۱ بایت میگیرند.
- UTF-16: در جاوااسکریپت و ویندوز بهصورت داخلی استفاده میشود. بیشتر نویسهها ۲ بایت میگیرند؛ نویسههای خارج از صفحهٔ چندزبانهٔ اصلی، مانند بسیاری از ایموجیها، ۴ بایت میگیرند.
- UTF-32: کدگذاری با طول ثابت است. هر نویسه، صرفنظر از نوع آن، دقیقاً ۴ بایت میگیرد.
- ASCII: کدگذاری ۷ بیتی است که ۱۲۸ نویسه، عمدتاً حروف انگلیسی، رقمها و نشانهگذاری پایه، را پوشش میدهد. هر نویسه ۱ بایت میگیرد. هر نویسهٔ خارج از این مجموعه رد میشود.
- لاتین-1 (ISO-۸۸۵۹-۱): کدگذاری ۸ بیتی است که ۲۵۶ نویسه را پوشش میدهد و حروف دارای علائم دیاکریتیک مورد استفاده در زبانهای اروپای غربی را نیز اضافه میکند. هر نویسه ۱ بایت میگیرد. نویسههای خارج از این مجموعه رد میشوند.
فرمول: طول بایت = تعداد بایتهایی که کدگذاری برای رشته تولید میکند. طول بیت = طول بایت × ۸.
این شمارش فقط خود متن را دربر میگیرد. هیچ نشانک ترتیب بایتی افزوده نمیشود؛ بنابراین شمارش UTF-16 یا UTF-32 در اینجا بهترتیب ۲ یا ۴ بایت کمتر از مقداری است که ابزاری با نوشتن نشانک در ابتدای متن به دست میدهد.
مثال حلشده
متن «Hello, world!» دارای ۱۳ نویسه است که همگی حروف و نشانهگذاری سادهٔ ASCII هستند.
- UTF-8: ۱۳ بایت (۱۰۴ بیت)، زیرا هر نویسه در ۱ بایت جا میگیرد.
- UTF-16: ۲۶ بایت (۲۰۸ بیت)، زیرا هر نویسه ۲ بایت میگیرد.
متن «こんにちは世界» (هفت نویسهٔ ژاپنی) در UTF-8 برای هر نویسه ۳ بایت میگیرد و در مجموع ۲۱ بایت (۱۶۸ بیت) میشود.
ایموجیای مانند 😀 خارج از صفحهٔ چندزبانهٔ اصلی قرار دارد. این نویسه در UTF-8، ۴ بایت؛ در UTF-16 (در قالب یک جفت جانشین)، ۴ بایت؛ و در UTF-۳۲، ۴ بایت میگیرد.
چرا اعداد صحیح علامتدار پاسخ را تغییر میدهند
رایانهها اعداد منفی را بهجای یک علامت منفی ساده، با مکمل دو ذخیره میکنند. بنابراین طول بیتی یک عدد صحیح منفی صرفاً طول بیتی قدرمطلق آن بهعلاوهٔ یک نیست. قاعده چنین است: طول بیتی کمترین تعداد بیت k است که مقدار در آن دستکم برابر با −۲^(k−۱) باشد. به همین دلیل −۱۲۸ (که برابر با −۲⁷ است) در ۸ بیت جا میگیرد، درحالیکه −۱۲۹ به ۹ بیت نیاز دارد.
پرسشهای متداول
چگونه بایتها را به بیت تبدیل کنم؟ در ۸ ضرب کنید. ده بایت برابر با ۸۰ بیت است، زیرا هر بایت طبق تعریف ۸ بیت دارد.
تفاوت طول بیت و طول بایت چیست؟ طول بیت، رقمهای دودویی منفرد را میشمارد. طول بایت، گروههای ۸ بیتی را میشمارد و وقتی طول بیت مضرب ۸ نباشد، آن را به بایت کامل بعدی گرد میکند.
یک نویسهٔ UTF-8 چند بایت استفاده میکند؟ بین ۱ و ۴ بایت. نویسههای مشترک با ASCII، ۱ بایت استفاده میکنند. بسیاری از نویسههای لاتین، یونانی و سیریلیکِ دارای اَکسان، ۲ بایت میگیرند. بیشتر نویسههای چینی، ژاپنی و کرهای ۳ بایت میگیرند. ایموجیها و دیگر نمادهای نادر ۴ بایت استفاده میکنند.
طول بایتی یک رشتهٔ شانزدهشانزدهی چگونه محاسبه میشود؟ پس از حذف نویسههای سفید، رقمهای شانزدهشانزدهی را بشمارید و برای بهدستآوردن بیتها، در ۴ ضرب کنید؛ سپس حاصل را به بایت کامل گرد کنید. هر بایت ۲ رقم شانزدهشانزدهی است؛ بنابراین «FF» برابر با ۱ بایت و «ABCD» برابر با ۲ بایت است. یک رقم تنها مانند «F» برابر با ۴ بیت است، اما همچنان ۱ بایت فضا اشغال میکند.
چرا یک عدد صحیح منفی گاهی به بیتهای بیشتری از همتای مثبت خود نیاز دارد؟ مکمل دو از یک بیت برای علامت استفاده میکند، اما آن بیت با بازهٔ مقادیر مشترک است و در همهٔ حالتها جداگانه به آن اضافه نمیشود. −۱۲۸ در همان ۸ بیتی جا میگیرد که مقادیر مثبت تا ۱۲۷ در آن جا میگیرند، اما −۱۲۹ دیگر در ۸ بیت جا نمیشود و به ۹ بیت نیاز دارد.
این ماشینحساب چه اندازههای ورودیای را میپذیرد؟ عددهای صحیح، رشتههای شانزدهشانزدهی و رشتههای متنی با حداکثر ۱٬۰۰۰٬۰۰۰ نویسه.
منابع
- "Character encoding." ویکیپدیا، بنیاد ویکیمدیا. https://en.wikipedia.org/wiki/Character_encoding
- "UTF-8, UTF-16, UTF-32 & BOM." یونیکد، شرکت. https://www.unicode.org/faq/utf_bom.html
- "Two's complement." ویکیپدیا، بنیاد ویکیمدیا. https://en.wikipedia.org/wiki/Two%27s_complement