PDA

View Full Version : سوال: تبدیل عدد علامتدار به رشته در مبنای 16



helma20
جمعه 20 دی 1387, 12:59 عصر
من می خوام یک عدد علامت دار را به رشته در مبنای 16 تیدیل کنم
اگه عددم + بود که مشکلی نیست
اما برای اعداد - باید چی کار کنم؟

Younes
یک شنبه 22 دی 1387, 13:54 عصر
خوب اصلا به علامت آن چه كار داري هر نيبل (چهار بيتي) را جداگانه بگير (به كمك and و شيفت و اين جور دستورات) بعد اين عدد را تشخيص داده و معادل مبناي 16 آنرا بدست آورده و در رشته جايگزين بكن.

helma20
یک شنبه 22 دی 1387, 15:13 عصر
ولی می خوام بدون استفاده از شیفت این کار رو بکنم

یکی از دوستان هم چنین راهی پیشنهاد دادند

" مثلا 1- توي مبناي 16 ميشه EEED يا 3- ميشه EEEB پس عددت رو مثلا 3- بايد مثبت در نظر بگيري ببري تو مبناي 16 ميشه 0003 بعد از مقدار EEEE كم كني....."

Younes
شنبه 28 دی 1387, 08:58 صبح
عدد شما بالاخره در يك ثبات (register) وجود دارد. در اين صورت شما اصلا نيازي نيست بدانيد كه عدد مثبت است يا منفي با يك دستوري شبيه به case پاسكال يا select زبان c شما ميتوانيد هر نيبل را تبديل نماييد. مثلا اگر عدد شما منفي 6 باشد شما در يك ثبات 16 بيتي رشته زير را خواهيد داشت : 1111111111111010 حال هر 4 بيت را در نظر گرفته و طبق جدول مبناي 16 ( از 0 تا F) آنرا تبديل نماييد فقط بايد توجه كنيد كه از چپ كاررا آغاز نماييد (يعني از پر ارزش ترين نيبل) در اين صورت عدد چه مثبت باشد و چه منفي براي شما فرقي نميكند و اين از مشخصات تبديل مبناي 2 به 16 است. اما به هر صورت بايد از شيفت و .. استفاده نماييد تا به نيبل ها دسترسي داشته باشيد.