חזקה של שתיים – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
שורה 14:
== אלגוריתם מהיר לבדיקה האם מספר חיובי הוא חזקה של שתיים ==
ההצגה הבינארית של מספרים מאפשרים ליצור אלגוריתם מאוד מהיר שמחליט האם מספר [[מספר חיובי|חיובי]] [[מספר שלם|שלם]] נתון ''x'' הוא חזקה של שתיים:
:המספר החיובי ''x'' הוא חזקה של שתיים ⇔ {{משמאל לימין|(''x'' & (''x'' - 1))}} שווה לאפס.
 
כאשר & הוא [[פעולותפעולה על סיביותבוליאנית|פעולת AND על סיביות]]. אם ''x'' הוא 0, תוצאת האלגוריתם רומזת ש-0 הוא חזקה של שתיים, ולכן בדיקה זו עובדת רק כאשר ''x'' > 0.
 
== אלגוריתמים מהירים לעיגול כל מספר שלם לכפולה של חזקה של שתיים ==
עבור כל שלם ''x'' וחזקה של שתיים , ''y'', נציב ''z'' = ''y'' - 1,
* {{משמאל לימין|''x'' & (!''z'')}} מעגל כלפי מטה,
* {{משמאל לימין|(''x'' + ''z'') & (!''z'')}} מעגל כלפי מעלה,
* {{משמאל לימין|(''x'' + ''y'' / 2) & (!''z'')}} מעגל לחזקה הקרובה ביותר.
 
== ראה גם ==