เมื่อไม่ได้รับการพิจารณาตัวเลขเชิงลบสำหรับการวิเคราะห์นี้เราจะเห็นได้ว่าเมื่อค่าอินพุตน้อยกว่า 1 ตัวเลขนี้ไม่ได้เป็นกำลังจำนวนเต็ม 2
เมื่อค่าอินพุตมากกว่าหนึ่งเราสามารถค้นหากฎได้ กำลังจำนวนเต็มของ 2 แสดงเป็นไบนารีเป็น:
2d = 10b; 4d = 100b; 8d = 1000B
บิตแรกของไบนารีคือหนึ่งและส่วนที่เหลือเป็นศูนย์
ดังนั้นเราสามารถตัดสินได้ว่าเมื่อค่าอินพุตถูกแปลงเป็นไบนารีบิตแรกคือหนึ่งและบิตอื่น ๆ คือ 0 เพื่อให้ค่าอินพุตเป็นกำลังจำนวนเต็ม 2
อย่างไรก็ตามการทำเช่นนี้ค่อนข้างยุ่งยากเกินไป เราสามารถตัดสินตำแหน่งของ "1" ในหมายเลขไบนารีเป็นครั้งสุดท้ายและใช้สตริง, LastIndexof (); วิธี.
และเรายังสามารถพบว่ากฎนี้ยังใช้กับกรณีที่ป้อนอินพุต 1
จากนั้นรหัสกระชับก็เข้ามา
บูลีนคงที่สาธารณะ ispoweroftwo (int n) {string str = integer.tobinarystring (n); ถ้า (n <1) ส่งคืนเท็จ; อื่น ๆ ถ้า (str.lastindexof ("1") == 0) กลับจริง; elsereturn false; -วิธี Java ข้างต้นเพื่อตรวจสอบว่ากำลังจำนวนเต็ม 2 เป็นเนื้อหาทั้งหมดที่ใช้ร่วมกันโดยตัวแก้ไขหรือไม่ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น