草庐IT

long-integer

全部标签

c++ - 如何从 unsigned long long 掩码中获取数字?

我想知道如何反转像this这样的东西.所以有一个mask其中automask=1ULL如何获得20从面具出来? 最佳答案 无循环很多年前,当我为国际象棋引擎编写按位算法时,我发现了一个快速实现,它对您的要求很有用,它是无循环的。此方法将返回第一个1位从右到左(最低有效位)的位置:inlineunsignedintlsb(unsignedlonglongvalue){if(!value)return-1;value&=-value;unsignedintlsb=(unsigned)value|(unsigned)(value>>32)

c++ - 如何将 LONG 转换为 CString?

我想将long转换为cstring。我已经为这个问题苦苦挣扎了一段时间,我看到了很多解决这个问题的变体,或多或少充满了麻烦和焦虑。我知道这个问题似乎很主观,但我认为它真的不应该。当情况涉及MFC和这些情况附带的标准库时,必须有一种方法被认为是最好的。我正在寻找一种行之有效的单行解决方案。有点像C#中的long.ToString()。 最佳答案 就这么简单:longmyLong=0;CStrings;//Youronelinesolutionisbelows.Format("%ld",myLong);

c++ - std::to_integer 的目的是什么?

据我所知,std::to_integer相当于T(value)其中value是类型为std::byte的变量.我研究了主要编译器的一些实现,发现在这种情况下,等效的字面意思是实现为。换句话说,大多数时候to_integer实际上实现为:returnT(value);仅此而已。我不明白的是,这样的功能有什么用?具有讽刺意味的是,缺点甚至超过优点。我应该为这样的函数包含一个完整的头文件,只是为了避免最有可能直接内联的类C类型转换。是否还有其他原因,或者它只是一个漂亮类C类型转换的替代品,仅此而已? 最佳答案 it'sjustreally

c++ - 为什么带有 unsigned long long 参数的 std::bitset 构造函数未标记为显式?

标准库类模板std::bitset有一个构造函数(C++11及更高版本,C++11之前的unsignedlong参数)constexprbitset(unsignedlonglong)noexcept与许多最佳实践指南相反,此单参数构造函数未标记为explicit.这背后的原理是什么? 最佳答案 显式构造主要反对explicit构造函数是无符号整数的复制初始化不再有效constexprautoN=64;std::bitsetb(0xDEADC0DE);//OK,directinitializationstd::bitsetb=0xD

C++ 计算比 double 或 long double 更精确

我正在自学C++和thispracticequestion它要求编写可以将PI计算为>30位的代码。我了解到double/longdouble在我的电脑上都是16位数字。我认为这个问题的教训是能够计算出超出可用范围的精度。因此,我该怎么做?可能吗?我现在计算Pi的代码是#include"stdafx.h"#include#include#includeusingnamespacestd;intmain(){doublepi;pi=4*atan(1.0);cout输出到16位和pi到30位比较如下。3.14159265358979313.1415926535897932384626433

c++ - 指针数组,如 (*(volatile unsigned long *)0x40004000)

我很难弄清楚如何解决以下问题。我在一个内存很少的嵌入式系统上,想尽量减少内存使用。指针总是让我感到困惑,而且将永远如此。我有一大堆寄存器地址的定义:#defineGPIO_PORTA_BASE(*((volatileunsignedlong*)0x40004000))#defineGPIO_PORTB_BASE(*((volatileunsignedlong*)0x40005000))//etc..这些寄存器可直接访问。例如:GPIO_PORT_BASE&=0x01;我需要的是一个包含上述寄存器的数组,以便我可以轻松地将它们映射到索引。例如:not_sure_what_to_decla

c++ - 将 std::integer_sequence 作为模板参数传递给元函数

如何将std::integer_sequence作为模板参数传递给元函数(即不是函数模板)?给出例如以下用例(但不限于此):我想使用整数序列从参数包中删除最后的N类型。我想我可以使用thisSOquestion中的selector,但我未能将整数序列传递给此元函数。#include#includetemplatestructselector{usingtype=std::tuple::type...>;};templatestructremove_last_n{usingIndices=std::make_index_sequence;usingtype=typenameselecto

c++ - 当两者都是 32 位宽时,在 C(或 C++)中使用 `unsigned long` 和 `unsigned int` 是否存在可观察到的差异?

我正在使用带有编译器的MPC56XX(嵌入式系统),int和long都是32位宽。在一个必需的软件包中,我们对32位宽的类型有以下定义:typedefsignedintsint32;typedefunsignedintuint32;在新版本中,这在没有太多文档的情况下更改为:typedefsignedlongsint32;typedefunsignedlonguint32;我明白为什么这是一件好事:整数在short和long之间有一个转换等级,所以理论上在使用第一组时可以应用额外的转换定义。我的问题:考虑到包作者强加给我们的上述更改,是否存在可以想象的情况,这样的更改会更改已编译的代码

kotlin - java.lang.Integer 在 Kotlin 中不能强制转换为 java.lang.Long(初始值为 null 时)

如果我有以下内容,它可以工作(即数字得到分配1000)funmain(args:Array){varnumber:Long?=null//ornumber=0valsimpleObject=SimpleClass()number=1000println("Hi+$number")}如果我有以下内容,它可以工作(即数字得到分配1000)importjava.util.*funmain(args:Array){varnumber:Long=0valsimpleObject=SimpleClass()number=simpleObject.getValue()println("Hi+$num

kotlin - java.lang.Integer 在 Kotlin 中不能强制转换为 java.lang.Long(初始值为 null 时)

如果我有以下内容,它可以工作(即数字得到分配1000)funmain(args:Array){varnumber:Long?=null//ornumber=0valsimpleObject=SimpleClass()number=1000println("Hi+$number")}如果我有以下内容,它可以工作(即数字得到分配1000)importjava.util.*funmain(args:Array){varnumber:Long=0valsimpleObject=SimpleClass()number=simpleObject.getValue()println("Hi+$num