在C#中,什么类似于C ++中的CHAR_BIT?快速吸收

时间:2011-02-03 07:38:23

标签: c# c++

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);
}

3 个答案:

答案 0 :(得分:4)

如果您认为C#中的byte等同于C ++的char,那么最接近的CHAR_BIT就是8。在C#中,byte保证恰好是8位。

答案 1 :(得分:3)

等效的是文字8,因为byte总是8位长。

答案 2 :(得分:1)

您不需要它,因为原始C#类型的大小是固定的。保证int是32位整数,long是64位整数,依此类推。