ในการตรวจสอบพาลินโดรม สมมติว่าจำนวนของเราคือ 5 ซึ่งเป็นเลขฐานสอง -
101
palindrome ของ 101 คือ 101 และเพื่อตรวจสอบว่าคุณจำเป็นต้องย้อนกลับบิตโดยใช้ฟังก์ชันต่อไปนี้ ที่นี่ใช้ตัวดำเนินการกะทางขวาระดับบิตและระดับบิตทางขวา -
public static long funcReverse(long num) { long myRev = 0; while (num > 0) { myRev <<= 1; if ((num & 1) == 1) myRev ^= 1; num >>= 1; } return myRev; }
จากนั้นการแทนค่าจริงจะถูกเปรียบเทียบเป็นการย้อนกลับโดยการส่งคืนและรับค่าจากฟังก์ชัน funcReverse() -
public static bool checkPalindrome(long num) { long myRev = funcReverse(num); return (num == myRev); }
ตัวอย่าง
ต่อไปนี้คือตัวอย่างที่สมบูรณ์เพื่อตรวจสอบว่าการแสดงเลขฐานสองของตัวเลขเป็นพาลินโดรมหรือไม่ -
using System; public class Demo { public static long funcReverse(long num) { long myRev = 0; while (num > 0) { myRev <<= 1; if ((num & 1) == 1) myRev ^= 1; num >>= 1; } return myRev; } public static bool checkPalindrome(long num) { long myRev = funcReverse(num); return (num == myRev); } public static void Main() { // Binary value of 5 us 101 long num = 5; if (checkPalindrome(num)) Console.WriteLine("Palindrome Number"); else Console.WriteLine("Not a Palindrome Number"); } }
ผลลัพธ์
Palindrome Number