两个数字的XNOR

2023年 9月 9日 64.6k 0

两个数字的XNOR

XNOR(异或非)门是一种数字逻辑门,它接受两个输入并给出一个输出。其功能是异或(XOR)门的逻辑补。如果两个输入相同,则输出为 TRUE;如果输入不同,则输出为 FALSE。下面给出了异或非门的真值表。

一个 B 输出
1 1 1
1 0 0
0 1 0
0 0 1

问题陈述

给定两个数字 x 和 y。求两个数的异或。

示例示例1

Input: x = 12, y = 5

登录后复制登录后复制登录后复制

Output: 6

登录后复制登录后复制登录后复制

说明

(12)10 = (1100)2
(5)10 = (101)2
XNOR = (110)2 = (6)10

登录后复制

Sampe Example 2

的中文翻译为:

示例示例2

Input: x = 16, y = 16

登录后复制

Output: 31

登录后复制

说明

(16)10 = (10000)2
(16)10 = (10000)2
XNOR = (11111)2 = (31)10

登录后复制

方法一:暴力法

暴力方法是检查两个数字的每一位并比较它们是否相同。如果相同则加1,否则加0。

伪代码

procedure xnor (x, y)
if x > y then
swap(x,y)
end if
if x == 0 and y == 0 then
ans = 1
end if
while x
x_rem = x & 1
y_rem = y & 1
if x_rem == y_rem then
ans = ans | (1 > 1
y = y >> 1
end procedure

登录后复制

示例:C++ 实现

在下面的程序中,检查x和y的位是否相同,然后设置答案中的位。

#include
using namespace std;

// Function to swap values of two variables
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}

// Function to find the XNOR of two numbers
int xnor(int x, int y){

// Placing the lower number in variable x
if (x > y){
swap(x, y);
}

// Base Condition
if (x == 0 && y == 0){
return 1;
}

// Cnt for counting the bit position Ans stores ans sets the bits of XNOR operation
int cnt = 0, ans = 0;

// executing loop for all the set bits in the lower number
while (x){

// Gets the last bit of x and y
int x_rem = x & 1, y_rem = y & 1;

// If last bits of x and y are same
if (x_rem == y_rem){
ans |= (1 > 1;
y = y >> 1;
}
return ans;
}
int main(){
int x = 10, y = 11;
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论