עבור לתוכן

תוכנית העברה מעשרוני לבינארי ..

Featured Replies

פורסם

אני צריך לבנות תוכנית בשפת C שתקבל מספר עשרוני ותפרק אותו למספר בינארי בן 16 ספרות וצריך שהמספר יחולק לפי high byte ו- low byte כלומר 8 ביטים ראשונים זה הlow ו8 ביטים אחרונים זה high אין לי מושג איך עושים את זה למישהו יש פיתרון?....

פורסם

בצע חילוק ב-2 של המספר עד אשר הוא שווה ל-1

התוצאה כמובן באה מאיסוף החילוק במודול שלו.

בקשר לפירוק, יש הרבה אפשרויות, אחת מהן היא הצבה במערך וממנו תפרק כרצונך

פורסם
  • מחבר

תודה אחי אבל יש מצב אתה עוזר לי יותר או אפילו נותן לי קוד?...

לדוגמא המספר 621 אז אני צריך להגיד שבLOW יש 109 וב HIGH יש 2 כי 2 שקול ל512 (אם אתה מבין אותי) 2 זה בHIGHBYTE הביט השני שהוא שקול ל512 אשמח לעזרה אחי אני חייב את זה דחוף להגיש מחר..

פורסם

אתה צריך להשתמש בפעולות AND (האופרטור &) והזזה.

כדי להוציא את ה-8 ביט הראשונים אתה צריך לעשות פעולת AND של המספר עם מספר ששמונת הביטים הימניים שלו הם 1 והשאר 0 (המספר FF בהצגה הקסדיצימלית או 255 בדצימלית). הפעולה הזו תאפס את שאר הביטים (הגבוהים) ותשאיר לך את הנמוכים:

num &= 0xFF

עכשיו בשביל לקבל את מה שאתה רוצה עבור השמונה השמאליים אתה מבצע את אותה פעולה אבל עם מספר ששמונת הביטים השמאליים שלו הם 1 והימניים 0:

num &= 0xFF00

בעיקרון זה יאפס לך את הימניים ותקבל 512 כמו שרצית (למרות שזה לא נכון להגיד שזה המספר שמייצג אותם, כדי לקבל את המספר שמייצג אותם היית צריך לבצע גם הזזה ימינה של שמונה ביטים).

פורסם
  • מחבר

k-o-b-y

תודה רבה אחי

יש מצב שאתה מראה לי את הקוד כי לא הבנתי בדיוק איפה להכניס את השורות שנתת לי אם תוכל להראות לי קוד אני ישמח תודה מראש

פורסם

בהמשך לרעיון שנתן לך KOBY הנה התוכנית:

#include <stdio.h>

void main()

{

int num;

scanf("%d", &num);

int high=num & 0xFF00;

int low =num & 0x00FF;

printf("HighBYte : %d",high);

printf("LowBYte : %d",low);

}

פורסם
  • מחבר

בהמשך לרעיון שנתן לך KOBY הנה התוכנית:

#include <stdio.h>

void main()

{

int num;

scanf("%d", &num);

int high=num & 0xFF00;

int low =num & 0x00FF;

printf("HighBYte : %d",high);

printf("LowBYte : %d",low);

}

תודה רבה אחי :)

פורסם

הנה פתרון לבעיה דומה - הדפסת מספר 32 ביט בבינארי. אבל אני לא בטוח אם צריך להתיחס אם זה big או little endian . לא נראה לי שזה צריך לשנה משהו כי מספר hex הוא ערך ולא רפרזנטציה נראה לי שזה יותר משנה כשעושים type cast למשתנה אחד לאחר ולא לליטראלים.

int main()
{
int mask;
int num;
int first_one=0;

scanf("%d", &num);

printf(" %d in binary is : " );
for(mask=0x80000000;mask!=0; mask>>=1)
{
if(!(mask&num)&&firstone)
{
printf("0");
}
else
{
first_one=1;
printf("1");
}

}

printf("\n");
return 0;
}

לפחות לא עשיתי לך את כל שיעורי הבית. התוכנית לא את האפסים לפני האחד הראשון (most segnificant one ) שהמוצאת ולא בדקתי אותה בכלל . הרגע עברתי עליה ותיקנתי כמה באגים. אבל ככה מדפיסים מספר בינארי - תצתרך לעשות לה כמה שינויים כדי שהיא תעבוד בשבילך.

פורסם
  • מחבר

תודה לכל מי שעזר לי עשיתם עבודה מצויינת בסופו של דבר השתמשתי בפקודות שנתן לי k-o-b-y זה פשוט וקל ועשה לי חיים קלים..

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים