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