مفهوم unsigned char در برنامه نویسی

در مورد سوال دوم:
ADCH یک رجیستر ۲ بیتی نیست و اون هم ۸ بیتی هست ولی ۲ بیت اولش برای ما مهم بود. معماری هم کاملا ۸ بیتی هست و اینکه ما برای خوندن adc که ۱۰ بیتی بوده مجبور شدیم ۸ تاش رو از یک جا و ۲ تاش رو از جای دیگه بخونیم، گواه این قضیه هست.
ولی اینکه یک میکرو معماری ۸ بیتی داره، دلیل نمیشه که نتونه محاسبات بیشتر رو انجام بده. مثلا ما متغیر از نوع int داریم که در avr اندازش 16 بیت هست ولی میکرو میتونه به راحتی محاسبات اون رو انجام بده. (شاید بشه اینطوری به قضیه نگاه کرد که avr یک ظرف داره برای جابجایی آب مثلا که توش 8 بیت جا میشه و برای جابجایی آب به اندازه بیشتر از این مجبوره چند بار از ظرفش استفاده کنه و کندتر هست در برابر یک میکرو که ظرفش ۳۲ بیت جا داره)

مهندس معین unsigned char چه مفهومی داره؟خب کاراکتر ما که علامت و اینا نمیفهمه.

و مهندس یه سوال دیگه.تو بخش ADCH برای adc میکرو یه جا بود که اول هشت بیت ADCL رو خوندیم و بعدش 2 بیت ADCH
بعد برای اینکه هر دو نمایش بدیم به عنوان یک ده بیت ADCL رو با شیفت چپ ADCH به اندازه ی 8 بیت جمع کردیم.میخاستم ببینم 2ADCH بیت داشت.ما هم 8 بیت شیفت دادیم.الان ADCH تو چه نوع رجیسنری ذخیره میشه؟مگه معماری 8 بیتی نیست؟

ممنون مهندس

با سلام،
متغیر از نوع char به اندازه یک بایت جا داره. اینکه اسمش char هست احتمالا برای این هست که برای نگهداری یک کاراکتر هم شما یک بایت جا لازم دارید. ولی در واقع شما فقط اعداد رو در متغیرها ذخیره می کنید و متغیر از نوع char می تونه از ۰ تا ۲۵۵ رو در خودش نگهداری کنه به شرط اینکه علامت وجود نداشته باشه. یعنی unsigned باشه. اگر شما متغیر رو از نوع signed char تعریف کنید، بیت پرارزش اون به معنی مثبت و منفی میشه و شما نصف اعدادی که می تونستید توش ذخیره کنید رو الان با علامت می تونید ذخیره کنید. (یعنی مشخص کنید که مثبت هستن یا منفی)