`
daiyuanyang
  • 浏览: 21634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++ 用bit运算做整数的平方

阅读更多
这个在网上至今也没找到,是无聊时做的,代码如下:

int num = 0 ;
int sum = 0;
int bitnum = 0;

cout << "Input Num : ";
cin >> num;

bitnum = num;

for ( int i = 0 ;  ; i++ )

{

      if ( num >> i == 1)

      {

           sum = num << i; bitnum = bitnum - ( 1 << i );
           for ( i = i - 1 ;  ; i-- )

           {

                  if ( i < 0) break; if ( ( bitnum >> i ) == 1 )

                  {

                         sum = sum + ( num << i ); bitnum = bitnum - ( 1 << i );

                    }

           } break;

      }

}

cout << sum << endl;



应该可以只用bit运算,而不使用for循环做出来,小弟不才,目前还没想到,有哪位高手想到了可以指点一下。。。。。。。
分享到:
评论
1 楼 zop_tt 2011-04-14  
没看懂啥意思..

相关推荐

    4.8实验-整数数据表示及运算

    补码则是反码的基础上加1,它是实际在计算机中存储和运算整数的方式,因为补码可以方便地进行加减运算,且没有溢出问题。 在二进制表示整数时,我们还需要关注两个概念:有符号数和无符号数。有符号数能表示正负两...

    C与C++位运算封装代码.rar

    - **模板化**:使用C++模板可以创建泛型位运算函数,适用于任意整数类型。 - **安全检查**:在封装函数中添加边界检查,确保位运算不超过整数类型的范围。 - **重载运算符**:可以重载位运算符,如`operator&()`...

    miracl大整数库

    4. 幂运算:`pow()`函数支持大整数的幂运算,包括平方和任意次幂。Miracl库使用了快速幂算法,减少了运算次数。 5. 位操作:库还提供了一些位操作函数,如`bit()`用于获取大整数的指定位,`setbit()`用于设置特定位...

    Get-1bit-from-1byte.rar_C++ 字节 位

    在C++编程中,处理字节(byte)和位(bit)是常见的操作,尤其是在低级别数据处理或优化性能的场合。本程序“Get-1bit-from-1byte.rar”提供了一个简单的方法来从一个字节中提取特定的位。下面我们将详细探讨这个...

    64bit素数检测,64bit幂模运算,64bit米勒拉宾测试

    这些代码可能使用C++或类似语言编写,利用了优化的数学库和算法来实现高效的大整数操作。 总的来说,64位素数检测和相关运算在现代计算中扮演着关键角色,尤其是在安全和加密应用中。理解并能有效实现这些算法对于...

    大数运算的实现bigint

    - 幂次运算(`^`):可以使用快速幂算法(Fast Exponentiation),通过不断平方和乘法将指数快速降至1,大大减少了计算次数。 在`bigint.cpp`和`bigint.h`文件中,我们可以预期找到大数类的实现,包括上述操作的...

    执行算术组合计算.rar

    对于大整数运算,可以使用快速幂算法(Fast Power Algorithm)来减少计算次数。在处理大数据流时,可能需要使用流式计算或者并行计算技术,比如MapReduce模型或分布式计算框架Apache Spark。 最后,我们来谈谈溢出...

    A Collection of Bit Programming Interview Questions solved in C++.pdf

    可以使用位运算来实现,通过将该数与其补码进行与运算来达到目的。 **代码示例:** ```cpp unsigned int isolate_rightmost_bit(unsigned int n) { return n & (-n); } ``` #### 15. 创建尾部零的掩码 **问题描述...

    程序设计-C and C++的实现:c14-bit.pdf

    补码则解决了这个问题,它使得正数、负数和0都有唯一的表示,并且允许用加法来实现减法运算。 补码的计算方法如下: - 对于正数,原码、反码和补码相同。 - 对于负数,最高位为1,其余位取反,然后对整个数加1...

    C++解数独的算法(内含三种)

    我们可以用一个32位的整数表示一行或一列,用9个这样的整数表示一个宫。通过位运算快速检查当前单元格可以填入哪些数字,然后结合二分搜索策略,有效地减少搜索空间。这种方法虽然更复杂,但对于优化性能和解决大型...

    Bit Twiddling Hacks

    一种方法是利用条件表达式和位运算的组合来实现:首先判断整数的符号,然后根据符号决定是否对整数取反。这样就可以避免使用分支结构,提高代码的性能。 #### 不使用分支结构计算两个整数的最大值或最小值 在某些...

    分治法,大整数乘法

    以下是一个使用C++编写的简化版函数示例,用于展示分治法应用于大整数乘法的逻辑: ```cpp void Mul(char* a, char* b) { // ...省略初始化代码... while(*bp) { // 当乘数不为空时,继续执行 int bit = *bp - '...

    计算机程序设计(C++):第02章_New简单信息的表达与运算(1).ppt

    6. **字符串**:在C++中,字符串是由字符组成的序列,可以用字符数组来表示,如`char str[21]`,或者使用`string`类,如`string myString`。字符串通常以空字符`\0`作为结束标志。 7. **运算符与表达式**:C++支持...

    RSA算法C++实现

    在C++实现中,`multiplication(int a, int b, int n)`函数实现了这个运算,通过循环累乘并取模的方式得到结果。 4. **扩展欧几里得算法**:该算法用于计算两个整数的最大公约数,并且可以找到它们的乘法逆元。在RSA...

    基础的C++常识(不全,尚待完善,文字格式)

    C++是一种广泛使用的编程语言,尤其适用于系统软件、嵌入式软件、游戏开发等领域。本文将根据提供的信息,深入解析C++的基础知识。 首先,C++的程序结构主要有三种:顺序结构、循环结构和选择结构。顺序结构按照...

    c/c++ procedure call standard for the arm architecture V2.10

    浮点结果则通过浮点寄存器传递,对于支持向量浮点运算的处理器,会使用VFP(Vector Floating Point)指令集。 文档的“THE STANDARD VARIANTS”部分可能讨论了ARM状态和Thumb状态之间的交互,这涉及到不同状态之间...

    c++常用英语单词!!!!

    C++ 中的常用英语单词 C++ 是一种功能强大且广泛应用的编程语言,它的英语单词在编程中扮演着重要的角色。了解 C++ 中的英语单词可以帮助开发者更好地理解编程概念和实现编程思想。本文将详细解释 C++ 中常用的英语...

    字节和位运算.docx

    在 C++ 中,位运算一般包含 6 种,分别是按位与 &,按位或 |,按位异或 ^,取反 ~,左移 和右移 &gt;&gt;。 与运算 & 是一个双目运算符,参加运算的两个数据,按二进制位进行按位"与"运算。运算规则是:0&0=0;0&1=0;1&0...

    信息论与编码实验C++(香农 费诺 哈夫曼 循环 模P)

    首先,信息量是衡量一个事件发生时所含信息的多少,通常用比特(bit)作为单位。信息量与事件发生的概率成反比,越是不常见的事件,其信息量越大。信息量的计算公式是:I(x) = -log2(P(x)),其中I(x)表示事件x的信息...

Global site tag (gtag.js) - Google Analytics