0
点赞
收藏
分享

微信扫一扫

Java 中的面向对象编程 (OOP) 概念

半夜放水 2024-08-14 阅读 24

基础位运算

常用位计算

给一个数n,确定它的二进制表示中的第x位是0还是1

#include <iostream>

bool checkBit(int n, int x) {
// 生成掩码,1 左移 (x-1) 位
int mask = 1 << (x - 1);
// 按位与操作,检查第 x 位
return (n & mask) != 0;
}

int main() {
int n = 13; // 二进制表示为 1101
int x = 3;

if (checkBit(n, x)) {
std::cout << "第 " << x << " 位是 1" << std::endl;
} else {
std::cout << "第 " << x << " 位是 0" << std::endl;
}

return 0;
}

将一个数n的二进制表示的第x位修改成1

#include <iostream>

int setBitToOne(int N, int x) {
// 生成掩码,1 左移 (x-1) 位
int mask = 1 << (x - 1);
// 按位或操作,设置第 x 位为 1
return N | mask;
}

int main() {
int N = 13; // 二进制表示为 1101
int x = 2;

int result = setBitToOne(N, x);

std::cout << "修改后的结果是: " << result << std::endl; // 输出修改后的数值
//std::cout << "二进制表示: " << std::bitset<8>(result) << std::endl; // 输出二进制表示

return 0;
}

将一个数n的二进制表示的第x位修改成0

#include <iostream>

int clearBitToZero(int N, int x) {
// 生成掩码,1 左移 (x-1) 位
int mask = 1 << (x - 1);
// 对掩码取反,然后与 N 进行按位与操作
return N
}

int main() {
int N = 13; // 二进制表示为 1101
int x = 3;

int result = clearBitToZero(N, x);

std::cout << "修改后的结果是: " << result << std::endl; // 输出修改后的数值

return 0;
}

提取一个数n二进制表示中最右侧的1

#include <iostream>

int extractRightmostOne(int n) {
return n
}

int main() {
int n = 18; // 二进制表示为 10010

int result = extractRightmostOne(n);

std::cout << "最右侧的1: " << result << std::endl; // 输出结果
std::cout << "二进制表示: " << std::bitset<8>(result) << std::endl; // 输出二进制表示

return 0;
}

删除一个数n二进制表示中最右侧位的1

#include <iostream>

int clearRightmostOne(int n) {
return n
}

int main() {
int n = 18; // 二进制表示为 10010

int result = clearRightmostOne(n);

std::cout << "清除最右侧的1后的结果: " << result << std::endl; // 输出结果

return 0;
}
举报

相关推荐

0 条评论