PDA

View Full Version : سوال: تفاوت نوع unsigned char با نوع char؟؟؟؟؟؟



motherboard
سه شنبه 09 اردیبهشت 1393, 15:53 عصر
سلام دوستان.من هیچ وقت متوجه نشدم که نوع با علامت کاراکتری با نوع بدون علامت کاراکتری جه تفاوتی داره؟؟مثلا تو نوع صحیح این تفاوت وجود داره مثل 1- و یا 1 اما حکمتش رو تو کاراکترها متوجه نمی شوم:متفکر:

omid_kma
سه شنبه 09 اردیبهشت 1393, 17:50 عصر
char هشت بیت هست
حالا اگر unsigned یا بدون علامت باشه هر 8بیت مثبته پس از 0-255 مقدار میگیره (چون 8 بیت یعنی 8 تا صفر و 1 پس ماکزیممش میشه 11111111 که توی مبنا 10 میشه 255 )
اگر هم علامت دار باشه یک بیت برای گذاشتن علامت مصرف میشه و 7 بیت میمونه با 7 بیت هم نهایتا میشه 128 تا عدد رو ذخیره کرد و بیت آخر هم نشون دهنده علامته یعنی میشه از -128 تا 127

motherboard
سه شنبه 09 اردیبهشت 1393, 19:17 عصر
مرسی.ولی منظور من این بود که من تا حالا چیزی به اسم کاراکتر علامت دار ندیدم که بخوام استفاده بکنم.مثلا تو اعداد صحیح جنس مثبت و منفی داریم ولی تو کاراکتر چه چیزی علامت داره این رو متوجه نمیشم و اینکه اصلا چه کاربردی داره؟:قلب:

omid_kma
سه شنبه 09 اردیبهشت 1393, 22:10 عصر
ما توی کد سطح پایین (اسمبلی ) چیزی به اسم char ,int ,double و... نداریم متغیر ها به این شکل تعریف میشن byte word dword,... و بصورت یک بلاک حافظه هستن که چند تا بیت داره !
توی زبان سطح بالایی مثل C برای مفهومی تر شدن ! به هر کدوم از اینا یک اسم دادن مثلا byte چون بیشتر برای ذخیره کاراکتر استفاده میشه اسمش رو گذاشتن char که معادل 8 بیت حافظست... کامپایلر c هم اینارو برای اجرا تبدیل به همون کد اسمبلی معادل می کنه .
جروف خودشون کد اسکی دارن که مثلا برای a تا z فکر کنم از 65 شروع میشه تا 92 وقتی هم که یک حرف رو ذخیره می کنین در اصل همون کاراکتر اسکی که یک عدد هست ذخیره میشه (منظورم اینه که کاراکتر خودش یکجور عدد حساب میشه )
char رو به عنوان یک بلاک 8 بیتی حافظه در نظر بگیر که یکی از کاربرداش ذخیره کاراکتر هست .
میتونی داخل unsigned char اعداد بین 0-255 رو هم ذخیره کنی . یا اگر signed باشه میشه اعداد منفی رو هم ذخیره کرد مثلا -10 خب طبیعتا وقتی که اعداد داخل بازه 0-255 هستن بهتره داخل char ذخیره بشن بدلیل مصرف حافظه کمتر (char یک بایت مصرف می کنه ولی int چهار بایت ! )
یکی از جاهای دیگه ای که استفاده میشه مثلا opencv هستش که داخل این کتابخونه تصاویر خاکستری (gray scale ) داخل یک وکتور از uchar یا همون unsigned char ذخیره میشن(چون هر پیکسل عکس معولا از 0-256 تا رنگ می تونه داشته باشه و مقدار منفی نداره )