נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
פורום מחשבים כללי
RSS UnderWarrior Forums : RSS פורום מחשבים כללי
נושא

נושא: שאלה: המשלים ל-2 (צריך בת זוג מהר) {:

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 05 September 2011 בשעה 12:14 | IP רשוּם
ציטוט mikeybb

ככה אני חדש בפורום, שמי מיכאל ואני סטודנט לתוכנה ויש לי כמה שאלות.

ראשונה:

למה כשאני מריץ את הקוד:

 

while(fgets(input,7,stdin) !=NULL) {

fputs(input,stdout);

}

 

ולעומת זאת אני מבצע את הקוד פעם אחת בלי לולאה בקוד של הלולאה אין התחשבות ל-7 תווים לעומת קוד בלי לולאה שיש התחשבות לגודל מטעמי בטחון המידע?

שאלה 2)

כיצד ניתן לעשות באסמבלי 8086 את שיטת המשלים ל-2 על מספרים לא שלמים בגודל float כך שזה יפרש את המספר הבינארי כמספר מסומן ולא כמספר לא מסומן?

 

תודה רבה,

 

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 05 September 2011 בשעה 21:12 | IP רשוּם
ציטוט shoshan

היי 2 אני לא יודע, 1 אפשר הסבר מחדש? יצא משפט לא ברור

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
NewMan
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 06 May 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 29
נשלח בתאריך: 07 September 2011 בשעה 05:35 | IP רשוּם
ציטוט NewMan

אני לא מכיר אסמבלי מי יודע מה, אך איני חושב שמשלים ל-2 זו
הדרך.
ברוב המחשבים,הייצוג הבינארי של מספרים ממשיים שונה מהייצוג
של המספרים השלמים. מספר ממשי מכיל שלושה חלקים:
מנטיסה, מעריך, וסימן.
המנטיסה והמעריך הינם מספרים ממשיים בנקודה קבועה. הסימן
הוא סיבית (או בית, לא זוכר).
הערך של הfloat מתקבל מהחישוב הבא: מעריך בריבוע כפול
מנטיסה כפול סימן.
מה שעליך לעשות הוא לחקור על הייצוג המדויק של הfloat ב8086
ופשוט לקבוע את הסימן- חיובי או שלילי.
כך עד כמה שאני יודע. תחקור טוב את הנושא לפני שאתה הורס את
המכונה...
חזרה לתחילת העמוד הצג את כרטיס החבר של NewMan חפש הודעות אחרות של NewMan
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 07 September 2011 בשעה 10:18 | IP רשוּם
ציטוט shoshan

הורס את המכונה? לא כזה קל

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 07 September 2011 בשעה 10:45 | IP רשוּם
ציטוט mikeybb

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

mov ax,3

not ax

add ax,1

והדפסתי אז כלל לא יצא לי 3-, כמובן שאני יכול לעשות את הדבר באמצעות neg ax אך אני צריך ספציפית בשיטת המשלים ל-2. אני אעשה חזרה על הדבר.

 

עכשיו בנוגע לשאלה ראשונה:

ידוע שכאשר אני עושה את הפקודה הבאה:

fgets(ary,7,stdin)

fputs(ary,stdout)

זה אומר קח דרך הזרימה שהיא הקלט של המקלדת 7 אותיות בלבד והכנס אותן לתוך המערך הנ''ל. (זאת אומרת אם אני יקליד יותר זה עדיין יקלוט רק 7)

אך כאשר אני עושה הדבר בלולאה כך ש-

while (fgets(ary,7,stdin)!= null)

זה לא מתחשב בגודל ולוקח כמה אותיות שאני מחליט להקליד (זאת אומרת לא תהיה הגבלה של 7)

חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
NewMan
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 06 May 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 29
נשלח בתאריך: 07 September 2011 בשעה 18:51 | IP רשוּם
ציטוט NewMan

אולי הפונקציה המדפיסה מפרשת את המספר כמספר חסר סימן. לא נראה לי רציני ש8086 לא משתמש במשלים ל-2.

אם אתה כותב את האסמבלי בתוך קוד C, תשים את הערך במשתנה signad.

חזרה לתחילת העמוד הצג את כרטיס החבר של NewMan חפש הודעות אחרות של NewMan
 
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 07 September 2011 בשעה 22:55 | IP רשוּם
ציטוט mikeybb

לא כותב מתוך c ואין קשר בין 2 השאלות
חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 08 September 2011 בשעה 00:51 | IP רשוּם
ציטוט shoshan

איך בדיוק הגעת לזה שאין התחשבות במגבלת התווים? השתמשת ב-debugger? ניסית להדפיס עוד משהו אחרי כל הדפסה בלולאה? יכול להיות שאתה מתבלבל בגלל שהוא לא יורד שורה אחרי כל הדפסה?


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 08 September 2011 בשעה 04:24 | IP רשוּם
ציטוט mikeybb

בהחלט איזו מן שאלה השתמשתי ב-debugger. ומה שקורה שהוא כן יורד שורה אחרי כל הדפסה, אבל הבעיה היא שאם הקלדתי את הערך:

abcdefghi

אזי הוא מדפיס לי

abcdefghi

כאשר הוא אינו בלולאה הוא מדפיס:

abcdefg

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 08 September 2011 בשעה 09:33 | IP רשוּם
ציטוט shoshan

אני אסביר שוב

ברגע שאתה מקליד 5 תוים והלולאה ביקשה רק 1 ה-4 הנוספים לא נעלמים אלא נשמרים בצד,
ובארבע קריאות הבאות של הלולאה ל-fgets היא תקבל כל פעם את התו הבא עד שהיא מגיעה
לסוף ההקלדה הקודמת ואז עוד פעם "נתקעת" בשביל לבקש מהמשתמש עוד קלט.

בגלל זה שאלתי אם בדקת בדיבאגר כי אם היית עובר פעולה פעולה היית מבין.

לחלופין אתה יכול לשנות את הקוד של הגוף של הלולאה כך שידפיס סימן בהתחלת כל הדפסה ובסוף כל הדפסה שבתוך הלולאה.

ותקבל פלט בסנון:
קוד:
i like pooding!
[i li][ke p][oodi][ng!
]i dont like pooding!!!
[i do][nt l][ike ][pood][ing!][!!
]123
[123
]



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 08 September 2011 בשעה 11:13 | IP רשוּם
ציטוט mikeybb

וואו איך לא חשבתי על זה, תודה רבה שושן. ואני כעיקרון עובד עם visual c++ אני אבדוק איך ניתן להפעיל את ה-debugger. (זה קצת שונה מהטורבו הזוועתי)

ורגע מתי בעצם זה מגיע למצב שהפונקציה מחזירה null?

חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 08 September 2011 בשעה 18:55 | IP רשוּם
ציטוט shoshan

הפונקציה מחזירה NULL כשהיא הגיעה לסוף של הזרם (EOF)

בנוסף היא מחזירה NULL אם יש שגיאה בקריאה מהזרם.

ניתן לקרוא ל-feof ו/או ל-ferror כדי לברר אם התרחשה שגיאה
ומה
בהתאמה השגיאה שהתרחשה.

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
mikeybb
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 05 September 2011
מדינה: Benin
משתמש: מנותק/ת
הודעות: 7
נשלח בתאריך: 09 September 2011 בשעה 11:17 | IP רשוּם
ציטוט mikeybb

הבנתי תסביר לי בבקשה, מה ההבדל בעצם בין fgets לבין fscanf, האם הכוונה ש-fgets מקבל שורה ו-fscanf מקבל כל פעם מחרוזת עד לרווח הראשון?
חזרה לתחילת העמוד הצג את כרטיס החבר של mikeybb חפש הודעות אחרות של mikeybb
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 09 September 2011 בשעה 15:01 | IP רשוּם
ציטוט shoshan

הממ...fscanf קוראת מהקובץ וממלאת במשתנים ערכים בהתאם לפורמט שאתה מעביר, די
שונה מבחינת הפעולה שמבוצעת מאשר לקרוא שורה למחרוזת.

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
משה123
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 28 October 2011
מדינה: United Kingdom
משתמש: מנותק/ת
הודעות: 1
נשלח בתאריך: 28 October 2011 בשעה 15:03 | IP רשוּם
ציטוט משה123




[>
<]
חזרה לתחילת העמוד הצג את כרטיס החבר של משה123 חפש הודעות אחרות של משה123
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה