สมมติว่าเรามีตัวเลขในระบบเลขฐานสิบ เราต้องได้ส่วนเสริมของตัวเลขในรูปแบบไบนารี จากนั้นเปลี่ยนเป็นทศนิยมอีกครั้งและส่งคืนผลลัพธ์ ดังนั้นหากตัวเลขคือ 20 รูปแบบไบนารีจะเป็น 10100 ส่วนเติมเต็มจะเป็น 01011 นี่คือ 11 ในฐานสิบ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- s :=สตริงไบนารีของตัวเลข n
- ผลรวม :=0 และ num :=1
- สำหรับแต่ละองค์ประกอบ i ใน s ในทิศทางย้อนกลับ
- ถ้า i ='b' ให้คืนค่ารวม
- มิฉะนั้น เมื่อ i ='0' แล้ว sum :=sum + num
- num :=num * 2
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def bitwiseComplement(self, N): s = str(bin(N)) sum = 0 num = 1 for i in s[::-1]: if i == "b": return sum elif i =="0": sum+=num num*=2 ob1 = Solution() print(ob1.bitwiseComplement(20))
อินพุต
20
ผลลัพธ์
11