- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要移植这个汇编指令:
NEG eax
所以我做了以下操作:
uint32_t a = 0x1234568;
a = reinterpret_cast<uint32_t>(-a);
因为 reinterpret_cast
做了我想要的,这意味着直接解释字节而不需要任何类型的转换/转换。
reinterpret_cast
吗?我问这个问题是因为虽然代码显然在 gcc 下工作,但它在 Visual Studio 下不起作用(无法从 uint32_t 转换为 uint32_t
和 应用于无符号的一元减号运算符类型,结果仍未签名
)。这些错误是有道理的,但我不确定除了使用 bit hack 计算 2 的互补值之外,我该如何以不同的方式做到这一点。
最佳答案
reinterpret_cast
,static_cast
就足够了。顺便说一句:您的代码确实编译为“neg”指令,至少在 Intel 平台上是这样。 ;-)
更新:
C++ 语言规范说:
The operand of the unary − operator shall have arithmetic or enumeration type and the result is the negation of its operand. Integral promotion is performed on integral or enumeration operands. The negative of an unsigned quantity is computed by subtracting its value from 2 n, where n is the number of bits in the promoted operand. The type of the result is the type of the promoted operand.
并且由于无符号类型被提升为自身,一元减号可以应用于无符号类型并且不会更改它们。
所以这样写是正确的,例如:
uint32_t convert( uint32_t x ) {
return -x;
}
static_cast
可以在那里使用,但不是必需的。 reinterpret_cast
不能用于转换整数。
关于c++ - 类型安全和 NEG 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30802457/
neg 3BH 据我了解,我应该得到 C5 ,但根据我自己的计算,我得到了 C4 (我将每个 1 切换为 0,将每个 0 切换为 1)。有什么问题? 最佳答案 neg 计算二进制补码负值,而不是按位负
我需要移植这个汇编指令: NEG eax 所以我做了以下操作: uint32_t a = 0x1234568; a = reinterpret_cast(-a); 因为 reinterpret_cas
我是 x86 汇编语言的新手,我在寄存器中保存了一个有符号整数 eax ,我想检查数字是负数还是正数。为此,我使用了 bt检查第一位的指令。 这是我所做的: bt eax,0 jnc isNegati
英特尔软件开发手册对 neg 指令是这样描述的: The CF flag set to 0 if the source operand is 0; otherwise it is set to 1.
案例是我正在研究我在互联网上找到的引起我注意的代码,是这样的: #include #include #define NEG ~0x0LL void ITOC(int8_t *vec, int n)
本文整理了Java中org.jooq.types.YearToMonth.neg()方法的一些代码示例,展示了YearToMonth.neg()的具体用法。这些代码示例主要来源于Github/Stac
当我使用滚动更新部署应用时,我在 GKE 上运行的应用出现停机时间。 rollingUpdate: maxSurge: 25% maxUnavailable: 0 ty
为什么这个正则表达式几乎可以返回一个包含两个字符串的数组,这两个字符串可以用作数字,正数或负数,但第二个字符串的负号被去掉了?我可以考虑使用另一行或两行代码来解决这个问题,但我真的很想让正则表达式正确
好吧,我正在为一个项目做这个,每当我试图让它除以零或平方根一个负数时,程序就会关闭。我试图找到一些我可以插入到代码中的东西,让它显示一条消息,然后再次提示输入值,但是我尝试插入的所有内容都会导致程序在
我正在使用 Verilog 开发一个项目,该项目将加密一个 20 位数字并使用 XOR、NOT 和 NAND 门将其解密。 用于加密, 输入XOR xorEncDec(异或的预定义操作数) NOT 输
在检查各种编译器的各种代码片段的输出时,我注意到英特尔的 C 编译器 (ICC) 有强烈倾向于发出一对 NEG+ADD 指令,其他编译器将使用单个 SUB 指令。 作为一个简单的示例,请考虑以下 C
我训练了一个 sklearn 决策树。 from sklearn.tree import DecisionTreeClassifier c=DecisionTreeClassifier(class_w
这真的很奇怪。我似乎根本无法通过 css 影响这张图片。尝试专门为图像添加一个类,并编写 css 以仅影响图像,但不影响 zip。它不会让步。唯一让它移动的是设置负值。实际图像上的边距,它只向上移动了
我正在尝试在 GCP 上使用 Ingress 应用 gRPC 负载平衡,为此我引用了 this例子。该示例显示 gRPC 负载平衡通过两种方式工作(一种使用 envoy side-car,另一种是 H
我正在通过一组冒险关键字术语查询交易标题表,并在与冒险相关的术语之一出现在标题中时标记相关冒险。为了在最少数量的查询中匹配多个冒险和多个交易,我将其分为两个步骤: 我创建了一个临时表,将每个冒险的所有
我已经将背景中的许多 div 设置为 -3 的 z-index,这样它们就不会干扰前景中元素的格式。但是,我还希望能够通过单击来使用 jquery 定位那些背景 div,但现在我似乎无法单击它们。我认
我遇到了一个问题: 在尝试使用容器 native 负载平衡 (CNLB) 时,为在 IIS 容器中运行的 .Net 应用成功进行健康检查。 我有一个网络端点组 (NEG),它是由 GKE 中的入口资源
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
我在尝试获取召回分数时收到此错误。 X_test = test_pos_vec + test_neg_vec Y_test = ["pos"] * len(test_pos_vec) + ["neg"
我正在毫无问题地运行以下代码: churn_dmatrix = xgb.DMatrix(data = class_data.iloc[:, :-1], label = class_data.Churn
我是一名优秀的程序员,十分优秀!