C++ 中翻转数字的第一个和最后一个位2025年5月13日 | 阅读 4 分钟 给定一个数字 n,翻转数字,使得新数字二进制展开的第一个位和最后一个位相同;也就是说,如果最初分配的位是 1,则翻转的位应分配为 0,反之亦然。介于第一个位和最后一个位之间的元素必须保持不变。位运算符可用于处理二进制数量或位模式中的单个位。 例如 1. 输入 = 12 输出 = 3 说明 12 -> 输入 12 的二进制展开是 1100 翻转二进制数 12 的第一个和最后一个位后,它变为 0011。 0011 -> 3 因此,翻转给定输入的第一个和最后一个位后,输出将是 3。 2. 输入 = 30 输出 = 15 说明 30 -> 输入 30 的二进制展开是 11110。 翻转二进制数 30 的第一个和最后一个位后,它变为 01111。 01111 -> 15 因此,翻转给定输入的第一个和最后一个位后,输出将是 15。 3. 输入 = 145 输出 = 16 说明 145 -> 输入 145 的二进制展开是 10010001 翻转二进制数 145 的第一个和最后一个位后,它变为 00010000。 00010000 -> 16 因此,翻转给定输入的第一个和最后一个位后,输出将是 16。 方法此方法使用左移运算符和按位异或。如果两个操作数的相应位不同,则按位异或运算符的值为 1,否则为 0。我们将利用按位异或运算符的位切换功能。例如,如果整数 n 的第一个位是 1,则 n ^ 1 将导致第一个位为 0。此外,如果数字的初始位当前设置为 0,则操作 n ^ 1 将其从 0 更改为 1。 我们计算 n ^ 1 来翻转数字 n 的第一个位。为了反转值,它在最低有效位和 n 的第一个位之间执行与 1 的 XOR 操作。我们创建一个数字 k,其中只设置了最后一个位,使用该数字来翻转最后一个位。最后一个位 r 的位置等于 log2(n)。这是因为 n 的二进制展开使用了 log2(n) 位。 算法
示例 1让我们用一个 C++ 程序来使用 XOR 切换数字的第一个和最后一个位 输出 ![]() 说明
复杂度分析时间复杂度其时间复杂度为 O(1),因为该方法的操作时间固定,与输入数量无关。 空间复杂度其空间复杂度为 O(1),因为在实现中没有使用辅助空间。 下一主题C++ 中的对象池设计模式 |
简介 std::get_money 函数是 C++ 标准库的一部分,用于根据区域设置特定的格式规则处理货币变量。该函数用于将输入流中的货币数据提取或格式化到应用程序中,确保其格式适当……
阅读 6 分钟
简介 当涉及到 C++ 编程时,标准模板库 (STL) 为开发人员提供了许多功能,这是一个强大的工具,可以提高开发过程的效率和效果。STL 将字符串作为其关键组件之一,字符串是...
7 分钟阅读
在 C++ 中,std::atomic 通过提供原子性来确保对变量的线程安全操作。相比之下,volatile 会阻止编译器对变量访问进行优化。它不能保证线程安全。std::atomic 用于并发需求,而 volatile 主要用于硬件交互……
11 分钟阅读
对角线占优是指一个矩阵,如果主对角线以外所有元素的总和小于主对角线上的元素总和。在这种情况下,方阵的整数,如果主对角线上的任何元素的值...
5 分钟阅读
C++17 中的 <charconv> 标头文件 <charconv> 标头包含几种将字符序列转换为数值信息以及反之亦然的方法。与相同目的的 <cstdlib> 标头文件函数相比,它被认为更有效。<charconv> 标头文件提供的函数是...
阅读 3 分钟
在本文中,我们将讨论在 C++ 中遇到数字时如何反转字符串。问题陈述问题是在字符串中每当遇到数字时反转字符串的片段。换句话说,由数字之间的字符组成的每个片段都应该...
阅读 4 分钟
随着 C++11 标准的发布,C++ 明确默认和删除函数被添加到为开发人员提供对特定成员函数的创建和应用的更多控制。这些功能通过允许显式指定默认行为来增强代码的清晰度、安全性和可维护性……
7 分钟阅读
在本文中,我们将讨论 C++ 中 std::thread 和 OpenMP 之间的区别。在深入探讨区别之前,让我们详细了解每个术语及其功能。什么是 C++ 中的 std::thread? std::thread 是程序的最小单元。当您运行叙事设计时...
5 分钟阅读
引言 通过采用设计精良的用户界面,可以显著提高现代应用程序出色的用户体验。诸如“自动完成”之类的功能在搜索引擎、网站和应用程序中非常受欢迎,有助于实现这一点。自动完成功能通过...
阅读 15 分钟
任何其二进制形式包含偶数个 1 的非负整数都称为偶数。例如,因为 9(二进制:1001)包含两个 1,所以它是偶数。偶数在练习二进制操作和位运算方面非常受欢迎...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India