Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับค่าที่น้อยกว่าซึ่ง XOR ที่มี x มากกว่า x ใน C++


เราได้รับตัวเลขจำนวนเต็ม สมมติว่า x และภารกิจคือการนับจำนวนที่น้อยกว่า x ซึ่ง XOR กับ x จะส่งผลให้ค่ามากกว่าค่า XOR

ตารางความจริงสำหรับการดำเนินการ XOR แสดงไว้ด้านล่าง

A B A XOR B
0 0 0
1 0 1
0 1 1
1 1 0

ป้อนข้อมูล − int x =11

ผลผลิต − นับค่าที่น้อยกว่าที่ XOR มีค่า x มากกว่า x เท่ากับ − 4

คำอธิบาย

เราได้ x เป็น 11 ซึ่งหมายความว่าเราต้องหา XOR ของ x ที่มีตัวเลขน้อยกว่า x ดังนั้นตัวเลขคือ 1 XOR 11 <11 (FALSE), 2 XOR 11 <11 (FALSE), 3 XOR 11 <11 (FALSE), 4 XOR 11> 11 (TRUE), 5 XOR 11> 11 (TRUE), 6 XOR 11> 11(TRUE), 7 XOR 11> 11(TRUE), 8 XOR 11<11(FALSE), 9 XOR 11 <11(FALSE), 10 XOR 11 <11(FALSE)

ป้อนข้อมูล -:int x =12

ผลผลิต − นับค่าที่น้อยกว่าที่ XOR มีค่า x มากกว่า x เท่ากับ − 11

คำอธิบาย

เราได้ x เป็น 12 ซึ่งหมายความว่าเราต้องหา XOR ของ x ที่มีตัวเลขน้อยกว่า x ดังนั้นตัวเลขจึงเป็น 1 XOR 12> 12(TRUE), 2 XOR 12> 12(TRUE), 3 XOR 12> 12(TRUE), 4 XOR 12 <12(FALSE), 5 XOR 12 <12(FALSE), 6 XOR 12 <12 (เท็จ) 7 XOR 12 <12 (เท็จ) 8 XOR 12 <12 (เท็จ) 9 XOR 12 <12 (เท็จ) 10 XOR 12 <12 (เท็จ) 11 XOR 12 <12 ( เท็จ)

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนองค์ประกอบจำนวนเต็มและเก็บไว้ในตัวแปรชื่อ x

  • ส่งค่า num ไปยังฟังก์ชันเพื่อดำเนินการต่อไป

  • สร้างการนับตัวแปรชั่วคราวเพื่อเก็บผลลัพธ์และตัวแปรชื่อ num แล้วตั้งค่าเป็น 1

  • เริ่มวนซ้ำ WHILE จนถึง x !=0

  • ภายในลูป ให้ตรวจสอบ IF x%2 ==0 แล้วตั้งค่าการนับเป็น count + num

  • ตั้งค่า num เป็น num * 2 และ x เป็น x / 2

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include
using namespace std;
int XOR_smaller(int x){
   int count = 0;
   int num = 1;
   while (x != 0){
      if (x%2 == 0){
         count = count + num;
      }
      num = num*2;
      x = x/2;
   }
   return count;
}
int main(){
   int x = 20;
   cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of smaller values whose XOR with x is greater than x are: 11