首页 > 解决方案 > 哪个位标志一个字节?

问题描述

我知道sbyte为了“签署”它的价值,无论是正面的还是负面的,都会放弃一点。这自然会留下 7 位的值 7 2 = 128(0 到 127 或 -1 到 -128 取决于签名位)。

我的问题是,字节中的 8 位中的哪一个是签名位?我想它是第8位,MSB?

我问,因为我希望byte foo = -1明确地转换为129with,byte bar = (byte)foo因为底层的位结构是10000001. 但是,以上返回bar为 255。

测试代码

    sbyte negative = -1;
    sbyte postive = 1;

    byte negativeResult = (byte)(negative & 0b_1000_0001);
    byte positiveResult = (byte)(postive & 0b_1000_0001);

    Console.WriteLine($"Negative evaluated to: {Convert.ToString(negativeResult, toBase: 2)}");
    Console.WriteLine($"Positive evaluated to: {Convert.ToString(positiveResult, toBase: 2)}");

输出

    Negative evaluated to: 10000001
    Positive evaluated to: 1

标签: c#data-structuresbinary

解决方案


推荐阅读