เทคนิคใดต่อไปนี้เป็นตัวเลือกที่ดีที่สุดสำหรับการหารจำนวนเต็ม 2 และทำไม
เทคนิค 1:
x = x >> 1;
เทคนิค 2:
x = x / 2;
นี่x
คือจำนวนเต็ม
x = x >>> 1
นั้น นอกจากนี้โปรดทราบว่าขึ้นอยู่กับแพลตฟอร์มและคอมไพเลอร์มันอาจจะค่อนข้างสมเหตุสมผลในการปรับการแบ่งแยกและการคูณด้วยตนเองโดยใช้กะ - การคิดถึงตัวควบคุมไมโครเช่นสนับสนุน ALU โดยตรงโดยไม่มีการคูณ
x /= 2
เพราะx >>= 1
ดูเหมือนว่าจะผูก monadic มากเกินไป)
x = x / 2
x /= 2
การตั้งค่าอัตนัยอาจ :)
⬜=
ชุดค่าผสมเหล่านี้ควรใช้ทุกครั้งที่เป็นไปได้ มันขจัดเสียงรบกวนและให้ความสำคัญกับความจริงที่x
ได้รับการแก้ไขในขณะที่=
ผู้ปฏิบัติงานทั่วไปค่อนข้างแนะนำว่ามันใช้ค่าใหม่ที่เป็นอิสระจากเก่า - ควรหลีกเลี่ยงการประกอบรวมกัน (เพื่อที่จะสามารถอ่านได้ดังนั้นคนที่รู้เพียงดำเนินการทางคณิตศาสตร์) อาจมีจุดเช่นกัน แต่แล้วคุณจะต้องสละประโยชน์อย่างมาก++
, --
, +=
มากเกินไป
x
ใหม่อีกครั้งไม่เหมาะสมในวิธีนี้: ควรเป็นอย่างใดอย่างหนึ่งx >>= 1
หรือx /= 2
ขึ้นอยู่กับสิ่งที่คุณตั้งใจจะแสดงออกด้วยการดำเนินการ ไม่ใช่เพราะมันเร็วกว่า (คอมไพเลอร์สมัยใหม่จะคอมไพล์ชุดเทียบเท่าทั้งหมดเพื่อการประกอบที่รวดเร็วและเหมือนกัน) แต่เพราะมันสับสนน้อยกว่า