PDA

View Full Version : مبتدی: در مورد کلمه کلیدی signed و unsigned



smemamian
سه شنبه 07 آذر 1391, 18:57 عصر
سلام
در مورد signed و unsigned ممنون میشم توضیح بدین, کجاها استفاده میشه .
(قبل از زدن تاپیک سرچ کردم.)
تشکر

مسعود اقدسی فام
سه شنبه 07 آذر 1391, 20:52 عصر
دو عبارت signed و unsigned علامتدار بودن و نبودن یه متغیر رو نشون می‌دن. اگه یه متغیری به صورت مثلا signed int یا int تعریف بشه به معنی علامتدار بودن متغیر هست. یعنی می‌شه اعداد منفی رو هم داخل اون ذخیره کرد. اما اگه unsigned int باشه دیگه عدد منفی مفهومی براش نداره. ولی چطور؟

فرض کنیم با استفاده از کامپایلرهای قدیمی داریم کار می‌کنیم و مثلا int دو بایت هستش. یعنی شونزده بیت وجود داره که یه بیتش برای علامت و پونزده تا برای خود عدد هستن. با پونزده بیت می‌شه دو به توان پونزده عدد رو ذخیره کرد. وقتی بیت علامت اضافه می‌شه یعنی همین بازه رو در سمت منفی هم می‌شه داشت. یعنی از منفی دو به توان پونزده تا مثبت دو به توان پونزده منهای یک.
وقتی متغیر رو به صورت UNSIGNED معرفی می‌کنی کل شونزده بیت مثبت می‌شه. پس از صفر تا دو به توان شونزده منهای یک رو ذخیره می‌کنه. با این کار درواقع اعداد منفی رو حذف کردیم و به بازه‌ی اعداد مثبت اضافه کردیم.

زمانی که ورودی مطمئنتا منفی نیست از UNSIGNED استفاده می کنن تا کاربر از بابت بازه‌ی مثبتی که در اختیار داره بیشتر آزاد باشه.