פורסם 2008 באוקטובר 1617 שנים כלומר, אם יש לי מספר אני רוצה לדעת אם הוא חיובי או שלילי אך בעזרת פעולות מתמטיות בלבד ללא שאילתה.תודה לעונים.
פורסם 2008 באוקטובר 1617 שנים כלומר, אם יש לי מספר אני רוצה לדעת אם הוא חיובי או שלילי אך בעזרת פעולות מתמטיות בלבד ללא שאילתה.תודה לעונים.איזו מין שאלה זו? אם אתה רוצה לדעת משהו על המספר הזה תצטרך לבצע שאילתה כלשהי...מה הבעיה לשאול אם הוא גדול מ 0? או- אם הוא שווה לערך המוחלט שלו או משהו כזה?
פורסם 2008 באוקטובר 1617 שנים תדפיס את המספר חלקי הערך המוחלט שלו.אם יוצא 1 הוא חיובי, ואם 1- הוא שלילי.אם אתה מנסה ליצור פונקציה אז return x/abs(x)=1ואז יוחזר אמת אם הוא חיובי ושקר אם הוא שלילי. [abs = absolute = ערך מוחלט].
פורסם 2008 באוקטובר 1617 שנים אתה עדין צריך לבדוק איכשהו אם המספר גדול או קטן מאפס...-----זה מאוד תלוי בשפה שאתה עובד איתה.לדוגמא באסמבלר.אתה יכול ליצור מערך של 2 כתובות (פוינטרים לפונקציות) אחד לתוצאת אמת ואחד לתוצאת שקר. אתה עושה AND עם המספר שאתה רוצה לבדוק והמספר הבינארי 1000000 (למספרי 8 ביט) עושה ROL ומבצע JMP לכתובת המערך עם אינדקס המספר שקיבלת.
פורסם 2008 באוקטובר 1617 שנים תדפיס את המספר חלקי הערך המוחלט שלו. אם יוצא 1 הוא חיובי, ואם 1- הוא שלילי. זה גם מה שאני חשבתי, הבעיה היא שזה כמו להדפיס את המספר אפשר גם להוסיף למספר את הערך המוחלט שלו ולהדפיס, להחסיר מהמספר את הערך המוחלט שלו ולהדפיס, אבל שום דבר לא משנה את העובדה שאנחנו מדפיסים בסוף את המספר, אחרי כמה פעולות אריתמטיות. לא משהו מתוחכם מדי אני לא מאמין שיש לזה פיתרון נורמאלי, כי כמו שכבר אמר omrit : איזו מין שאלה זו? אם אתה רוצה לדעת משהו על המספר הזה תצטרך לבצע שאילתה כלשהי... chenrp, מי נתן לך את השאלה הזו?
פורסם 2008 באוקטובר 1617 שנים סתכל, אפשר להתחכם, אבל בתכלס כל הזמן אתה תבדוק תנאי כלשהו גם אם זה לא במפורש עם IF
פורסם 2008 באוקטובר 1617 שנים מחבר אנשים, כולכם משתמשים בפונקיה או בתנאי.אני לא רוצה לשתמש בפונקיה ולא בתנאי ולא בשאילתה!אתה עדין צריך לבדוק איכשהו אם המספר גדול או קטן מאפס...-----זה מאוד תלוי בשפה שאתה עובד איתה.לדוגמא באסמבלר.אתה יכול ליצור מערך של 2 כתובות (פוינטרים לפונקציות) אחד לתוצאת אמת ואחד לתוצאת שקר. אתה עושה AND עם המספר שאתה רוצה לבדוק והמספר הבינארי 1000000 (למספרי 8 ביט) עושה ROL ומבצע JMP לכתובת המערך עם אינדקס המספר שקיבלת.אתה צודק.אני משתמש בSQL SERERתוכל להסביר יותר בבקשה?תודה לעונים
פורסם 2008 באוקטובר 1617 שנים #include<stdio.h>void isNeg();void isPos();typedef void (*func)();func jmpadr[2]={isPos,isNeg};void main(void){ int num=10,res=0; int tester = 0x8000; // equals 1000 0000 0000 0000 res=num&tester; asm{ ROL res,1; } jmpadr[res]();}void isPos(){ printf("positive");}void isNeg(){ printf("negetive");}עריכה: WTF?! אמרת CPP...
פורסם 2008 באוקטובר 1717 שנים מחבר חחח אח שלי תודה רבה.ערכתי מיד אחרי זה ל SQL SERVER. סליחה.בכל מקרה פתרתי את זה ב5 שורות.עשיתי את זה ע"י הפרדה: ע"י שימוש ב פונצקיה ABS(שהיא בנויה לא מפונקציה כבדה אלא מפעולות אריטמטיות). החסרתי 1 וחילקתי ב 256 והכפלתי וכו'... ואז חיוביים יצאו 0 ושליליים יצאו 256תודה לעוזרים.
פורסם 2008 באוקטובר 1917 שנים אני קודם הייתי עושה ROL, ואחר כך & עם אחד כדי לתמוך בכל מיני גדלים של משתנים.
פורסם 2008 באוקטובר 1917 שנים יפה, לא חשבתי על זה. השאלה זה אם C ידוע לעשות Casting אוטומטי גם לפעולות בינאריות...
פורסם 2008 באוקטובר 2017 שנים אתה מודע לכך שלא ניתן לבצע כל פעולה חשבונית כלשהי על שני משתנים בעלי גדלים שונים, נכון?הסיבה היחידה ש-C מאפשר את זה, זה כי הוא מזהה מתי זה קורה וממיר את הקטן מבניהם לגדול. באסמבלר אתה חייב לציין את זה במפורש על ידי BYTE PTR, WORD PTR, DWORD PTR או QWORD PTR (יש עוד אחד ששכחתי). המילים השמורות הנ"ל מסמנות גודל נתון של 1,2,4,8 בתים בהתאמה.
פורסם 2008 באוקטובר 2017 שנים אם מדברים על C או אסמבלי אז יש את השיטה הידועה הבאה:http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbsהשיטה עובדת על מחשבי two's complement שיש להם arithmetic shift right וכשהקומפיילר מקמפל << של ערך עם סימן בצורה הנכונה.99.999% שזה מתאים לכל מי שקורא את הפורום הזה.זה מתבסס על שיטת selection שניתן לראות כאן: http://aggregate.org/MAGIC/#Integer%20Selection
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.