草庐IT

Unsigned

全部标签

c++ - C++ 中高数的模幂运算

因此,我最近一直致力于实现Miller-Rabin素性检验。我将它限制在所有32位数字的范围内,因为这是一个有趣的项目,我正在做它来熟悉c++,而且我不想使用任何64位一会儿。一个额外的好处是该算法对所有32位数字都是确定性的,因此我可以显着提高效率,因为我确切地知道要测试哪些证人。因此,对于较小的数字,该算法运行得非常好。但是,该过程的一部分依赖于模幂运算,即(num^pow)%mod。所以,例如,3^2%5=9%5=4这是我用于模幂运算的代码:unsignedmod_pow(unsignednum,unsignedpow,unsignedmod){unsignedtest;for(

c++ - C++ 中高数的模幂运算

因此,我最近一直致力于实现Miller-Rabin素性检验。我将它限制在所有32位数字的范围内,因为这是一个有趣的项目,我正在做它来熟悉c++,而且我不想使用任何64位一会儿。一个额外的好处是该算法对所有32位数字都是确定性的,因此我可以显着提高效率,因为我确切地知道要测试哪些证人。因此,对于较小的数字,该算法运行得非常好。但是,该过程的一部分依赖于模幂运算,即(num^pow)%mod。所以,例如,3^2%5=9%5=4这是我用于模幂运算的代码:unsignedmod_pow(unsignednum,unsignedpow,unsignedmod){unsignedtest;for(

c++ - unsigned char 在函数调用中自动提升为int,为什么?

为什么在调用函数时unsignedchar会自动提升为int?在下面的示例中,有一个f(int)和一个f(char)函数。编译器将unsignedchar参数强制为char并调用f(char)似乎更合乎逻辑,因为它们具有相同数量的位。它改为调用f(int),即使这意味着将参数提升为具有更多位的类型。任何指向规则定义位置的指针?标准还是编译器/平台特定?#includevoidf(intkey){std::cout产生这个输出:voidf(int)voidf(char)voidf(int) 最佳答案 因为unsignedchar不能用

c++ - unsigned char 在函数调用中自动提升为int,为什么?

为什么在调用函数时unsignedchar会自动提升为int?在下面的示例中,有一个f(int)和一个f(char)函数。编译器将unsignedchar参数强制为char并调用f(char)似乎更合乎逻辑,因为它们具有相同数量的位。它改为调用f(int),即使这意味着将参数提升为具有更多位的类型。任何指向规则定义位置的指针?标准还是编译器/平台特定?#includevoidf(intkey){std::cout产生这个输出:voidf(int)voidf(char)voidf(int) 最佳答案 因为unsignedchar不能用

c++ - 如何构建编译时键/值存储?

我有一个问题,我需要在编译时将一个整数映射到另一个整数。基本上,我需要std::map的编译时等价物.如果在map中找不到键,我想返回一个默认值。我想使用的界面:templatestructstatic_map{...};templatestructlookup{staticunsignedintvalue=...};lookup返回与key关联的值在StaticMap.如果key没找到,那么default_value被退回。一般来说,键/值对的数量会受到大于2的限制。构建static_map的最佳方法是什么?和lookup?我还应该提到,我仅限于使用C++03语言结构,因此没有C++

c++ - 如何构建编译时键/值存储?

我有一个问题,我需要在编译时将一个整数映射到另一个整数。基本上,我需要std::map的编译时等价物.如果在map中找不到键,我想返回一个默认值。我想使用的界面:templatestructstatic_map{...};templatestructlookup{staticunsignedintvalue=...};lookup返回与key关联的值在StaticMap.如果key没找到,那么default_value被退回。一般来说,键/值对的数量会受到大于2的限制。构建static_map的最佳方法是什么?和lookup?我还应该提到,我仅限于使用C++03语言结构,因此没有C++

c++ - g++ c++11 constexpr 评估性能

g++(4.7.2)和类似版本似乎在编译时评估constexpr的速度非常快。在我的机器上实际上比运行时编译的程序快得多。对这种行为有合理的解释吗?是否涉及优化技术?适用于编译时,可以比实际编译的代码更快地执行?如果是这样,是哪个?这是我的测试程序和观察到的结果。#includeconstexprintmc91(intn){return(n>100)?n-10:mc91(mc91(n+11));}constexprdoublefoo(doublen){return(n>2)?(0.9999)*((unsignedint)(foo(n-1)+foo(n-2))%100):1;}const

c++ - g++ c++11 constexpr 评估性能

g++(4.7.2)和类似版本似乎在编译时评估constexpr的速度非常快。在我的机器上实际上比运行时编译的程序快得多。对这种行为有合理的解释吗?是否涉及优化技术?适用于编译时,可以比实际编译的代码更快地执行?如果是这样,是哪个?这是我的测试程序和观察到的结果。#includeconstexprintmc91(intn){return(n>100)?n-10:mc91(mc91(n+11));}constexprdoublefoo(doublen){return(n>2)?(0.9999)*((unsignedint)(foo(n-1)+foo(n-2))%100):1;}const

c++ - 将 char 用于小整数 (C++)

我读到可以将“char”用于小整数。但是,当我尝试时,unsignedcharA=4;std::cout它给出一个字符,而不是4。 最佳答案 您正在经历的是运算符重载的影响。运算符假设当您将一个类型为char的变量传递给一个字符时,您很可能想要打印该字符。,因此它的行为与您对整数变量的预期不同。根据VivekGoel的建议你可以强制编译器选择你真正想要的重载:unsignedcharA=4;std::cout(A)附录:除非您在资源严重受限(尤其是内存很小)的环境中工作,否则您的优化是错误的。unsignedint上的操作通常比un

c++ - 将 char 用于小整数 (C++)

我读到可以将“char”用于小整数。但是,当我尝试时,unsignedcharA=4;std::cout它给出一个字符,而不是4。 最佳答案 您正在经历的是运算符重载的影响。运算符假设当您将一个类型为char的变量传递给一个字符时,您很可能想要打印该字符。,因此它的行为与您对整数变量的预期不同。根据VivekGoel的建议你可以强制编译器选择你真正想要的重载:unsignedcharA=4;std::cout(A)附录:除非您在资源严重受限(尤其是内存很小)的环境中工作,否则您的优化是错误的。unsignedint上的操作通常比un