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

תוכן שנמחק תוכן שנוסף
מ ויקיזציה
מרגיש שהדוגמאות מיותרות. קצת עיצוב.
שורה 15:
ההצגה הבינארית של מספרים מאפשרים ליצור אלגוריתם מאוד מהיר שמחליט האם מספר [[מספר חיובי|חיובי]] [[מספר שלם|שלם]] נתון ''x'' הוא חזקה של שתיים:
<span class="texhtml mvar" style="white-space: normal;"><font face="sans-serif">המספר החיובי </font></span><span class="texhtml mvar" style="font-style:italic;">x</span> הוא חזקה של שתיים ⇔ <span class="texhtml ">(''x'' & (''x'' − 1))</span> שווה לאפס.
כאשר & הוא [[פעולות על סיביות|פעולת AND על סיביות]]. זכרו שאם ''x''' הוא 0, תוצאת האלגוריתם רומזת ש-0 הוא חזקה של שתיים, ולכן בדיקה זו עובדת רק כאשר ''x'' > 0
 
כאשר & הוא [[פעולות על סיביות|פעולת AND על סיביות]]. זכרו שאםאם ''x''' הוא 0, תוצאת האלגוריתם רומזת ש-0 הוא חזקה של שתיים, ולכן בדיקה זו עובדת רק כאשר ''x'' > 0.
דוגמאות:
{| border="0" id="cx1232" class="" data-source="1232" data-cx-state="source" data-cx-weight="167" contenteditable="true"
 
| id="1235" |<center id="1236"> −1</center>
| id="1238" |<center id="1239"> =</center>
| id="1241" |1…111…1
 
| id="1244" |<center id="1245"> −1</center>
| id="1247" |<center id="1248"> =</center>
| id="1250" |1…111…111…1
|- id="1252"
| id="1253" |<center id="1254"> x</center>
| id="1256" |<center id="1257"> =</center>
| id="1259" |0…010…0
 
| id="1262" |<center id="1263"> y</center>
| id="1265" |<center id="1266"> =</center>
| id="1268" |0…010…010…0
|- id="1270"
| id="1271" |<center id="1272"> x − 1</center>
| id="1274" |<center id="1275"> =</center>
| id="1277" |0…001…1
 
| id="1280" |<center id="1281"> y−1</center>
| id="1283" |<center id="1284"> =</center>
| id="1286" |0…010…001…1
|- id="1288"
| id="1289" |<center id="1290"> x & (x − 1)</center>
| id="1292" |<center id="1293"> =</center>
| id="1295" |0…000…0
 
| id="1298" |<center id="1299"> y & (y − 1)</center>
| id="1301" |<center id="1302"> =</center>
| id="1304" |0…010…000…0
|}
 
== אלגוריתמים מהירים לעיגול כל מספר שלם לכפולה של חזקה של שתיים ==