gpt4 book ai didi

C# 将 bool 重新解释为 byte/int(无分支)

转载 作者:行者123 更新时间:2023-12-01 21:52:57 25 4
gpt4 key购买 nike

在 C# 中是否可以将 bool 转换为 byteint(或任何整数类型,真的)分支?

换句话说,这不够好:

var myInt = myBool ? 1 : 0;

我们可能会说我们想要将 bool 重新解释为底层 byte,最好是用尽可能少的指令。目的是避免分支预测失败,如 here 所示。 .

最佳答案

unsafe
{
byte myByte = *(byte*)&myBool;
}

另一个选项是 System.Runtime.CompilerServices.Unsafe ,这需要非核心平台上的 NuGet 包:

byte myByte = Unsafe.As<bool, byte>(ref myBool);

CLI 规范仅将 false 定义为 0 并将 true 定义为除 0 之外的任何内容,所以从技术上讲可能无法在所有平台上按预期工作。然而,据我所知,C# 编译器还假设 bool 只有两个值,因此在实践中我希望它能在大多数学术案例之外工作。

关于C# 将 bool 重新解释为 byte/int(无分支),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58934996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com