פורסם 2007 במרץ 618 שנים אני צריך לבנות תוכנית בשפת C שתקבל מספר עשרוני ותפרק אותו למספר בינארי בן 16 ספרות וצריך שהמספר יחולק לפי high byte ו- low byte כלומר 8 ביטים ראשונים זה הlow ו8 ביטים אחרונים זה high אין לי מושג איך עושים את זה למישהו יש פיתרון?....
פורסם 2007 במרץ 618 שנים בצע חילוק ב-2 של המספר עד אשר הוא שווה ל-1התוצאה כמובן באה מאיסוף החילוק במודול שלו.בקשר לפירוק, יש הרבה אפשרויות, אחת מהן היא הצבה במערך וממנו תפרק כרצונך
פורסם 2007 במרץ 618 שנים מחבר תודה אחי אבל יש מצב אתה עוזר לי יותר או אפילו נותן לי קוד?...לדוגמא המספר 621 אז אני צריך להגיד שבLOW יש 109 וב HIGH יש 2 כי 2 שקול ל512 (אם אתה מבין אותי) 2 זה בHIGHBYTE הביט השני שהוא שקול ל512 אשמח לעזרה אחי אני חייב את זה דחוף להגיש מחר..
פורסם 2007 במרץ 618 שנים אתה צריך להשתמש בפעולות AND (האופרטור &) והזזה.כדי להוציא את ה-8 ביט הראשונים אתה צריך לעשות פעולת AND של המספר עם מספר ששמונת הביטים הימניים שלו הם 1 והשאר 0 (המספר FF בהצגה הקסדיצימלית או 255 בדצימלית). הפעולה הזו תאפס את שאר הביטים (הגבוהים) ותשאיר לך את הנמוכים:num &= 0xFFעכשיו בשביל לקבל את מה שאתה רוצה עבור השמונה השמאליים אתה מבצע את אותה פעולה אבל עם מספר ששמונת הביטים השמאליים שלו הם 1 והימניים 0:num &= 0xFF00בעיקרון זה יאפס לך את הימניים ותקבל 512 כמו שרצית (למרות שזה לא נכון להגיד שזה המספר שמייצג אותם, כדי לקבל את המספר שמייצג אותם היית צריך לבצע גם הזזה ימינה של שמונה ביטים).
פורסם 2007 במרץ 618 שנים מחבר k-o-b-y תודה רבה אחייש מצב שאתה מראה לי את הקוד כי לא הבנתי בדיוק איפה להכניס את השורות שנתת לי אם תוכל להראות לי קוד אני ישמח תודה מראש
פורסם 2007 במרץ 618 שנים בהמשך לרעיון שנתן לך 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);}
פורסם 2007 במרץ 718 שנים מחבר בהמשך לרעיון שנתן לך 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); } תודה רבה אחי
פורסם 2007 במרץ 718 שנים הנה פתרון לבעיה דומה - הדפסת מספר 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 ) שהמוצאת ולא בדקתי אותה בכלל . הרגע עברתי עליה ותיקנתי כמה באגים. אבל ככה מדפיסים מספר בינארי - תצתרך לעשות לה כמה שינויים כדי שהיא תעבוד בשבילך.
פורסם 2007 במרץ 818 שנים מחבר תודה לכל מי שעזר לי עשיתם עבודה מצויינת בסופו של דבר השתמשתי בפקודות שנתן לי k-o-b-y זה פשוט וקל ועשה לי חיים קלים..
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.