C#是否有类似于C ++的CHAR_BIT?
更新
基本上,我正在尝试计算没有分支的abs,这是C ++版本:
// Compute the integer absolute value (abs) without branching
int v; // we want to find the absolute value of v
unsigned int r; // the result goes here
int const mask = v >> sizeof(int) * CHAR_BIT - 1;
r = (v ^ mask) - mask;
这是我的C#版本:
private int Abs(int value)
{
int mask = value >> sizeof(int) * 8 - 1;
return ((value ^ mask) - mask);
}
奇怪的是,这也有效:
private int Abs(int value)
{
int mask = value >> sizeof(int) * sizeof(byte) - 1;
return ((value ^ mask) - mask);
}
答案 0 :(得分:4)
如果您认为C#中的byte
等同于C ++的char
,那么最接近的CHAR_BIT
就是8
。在C#中,byte
保证恰好是8位。
答案 1 :(得分:3)
等效的是文字8
,因为byte
总是8位长。
答案 2 :(得分:1)
您不需要它,因为原始C#类型的大小是固定的。保证int是32位整数,long是64位整数,依此类推。