ตัวดำเนินการ ^ ใน Java
^
ใน Java เป็นตัวดำเนินการพิเศษหรือ ("xor")
ลอง5^6
ยกตัวอย่าง:
(decimal) (binary)
5 = 101
6 = 110
------------------ xor
3 = 011
นี่คือตารางความจริงสำหรับ bitwise ( JLS 15.22.1 ) และ logical ( JLS 15.22.2 ) xor:
^ | 0 1 ^ | F T
--+----- --+-----
0 | 0 1 F | F T
1 | 1 0 T | T F
ยิ่งไปกว่านั้นคุณยังสามารถคิดถึง xor ว่า "สิ่งนี้หรือสิ่งนั้น แต่ไม่ใช่ทั้งสองอย่าง !"
ดูสิ่งนี้ด้วย
การยกกำลังใน Java
สำหรับการยกกำลังเลขจำนวนเต็มน่าเสียดายที่ Java ไม่มีโอเปอเรเตอร์ดังกล่าว คุณสามารถใช้double Math.pow(double, double)
(ชี้ขาดผลลัพธ์เพื่อint
หากจำเป็น)
คุณยังสามารถใช้เคล็ดลับการเลื่อนบิตแบบดั้งเดิมเพื่อคำนวณพลังบางอย่างของทั้งสอง นั่นคือ(1L << k)
เป็นสองถึงkอำนาจ -th k=0..63
สำหรับ
ดูสิ่งนี้ด้วย
ผสานบันทึก : คำตอบนี้ถูกผสานจากคำถามอื่นที่ต้องการใช้การยกกำลังเพื่อแปลงสตริง"8675309"
เป็นint
โดยไม่ใช้Integer.parseInt
เป็นแบบฝึกหัดการเขียนโปรแกรม ( ^
หมายถึงการยกกำลังนับจากนี้เป็นต้นไป) ความตั้งใจที่ OP ก็คือการคำนวณ8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0 = 8675309
; ส่วนต่อไปของที่อยู่คำตอบนี้ไม่จำเป็นต้องมีการยกกำลังสำหรับงานนี้
โครงการของ Horner
ที่อยู่เฉพาะของคุณความต้องการคุณคุณไม่จำเป็นต้องคำนวณพลังต่าง ๆ จำนวน 10 คุณสามารถใช้สิ่งที่เรียกว่าแบบแผนของ Hornerซึ่งไม่เพียง แต่เรียบง่าย แต่มีประสิทธิภาพ
เนื่องจากคุณกำลังทำสิ่งนี้เป็นการออกกำลังกายส่วนตัวฉันจะไม่ให้รหัส Java แต่นี่เป็นแนวคิดหลัก:
8675309 = 8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0
= (((((8*10 + 6)*10 + 7)*10 + 5)*10 + 3)*10 + 0)*10 + 9
มันอาจดูซับซ้อนในตอนแรก แต่จริงๆแล้วไม่ใช่ โดยทั่วไปแล้วคุณอ่านตัวเลขจากซ้ายไปขวาและคูณผลลัพธ์ของคุณจนถึง 10 ก่อนที่จะเพิ่มตัวเลขถัดไป
ในรูปแบบตาราง:
step result digit result*10+digit
1 init=0 8 8
2 8 6 86
3 86 7 867
4 867 5 8675
5 8675 3 86753
6 86753 0 867530
7 867530 9 8675309=final