如何更改二进制表示形式的第三位?

时间:2019-04-12 23:41:30

标签: c#

我正在尝试编写其中第三位始终为1的代码。

我已经完成了以下操作来检测第三位,但是我不知道如何将其更改为显示第三位,因此应该在不使用循环的情况下完成操作,因为该练习来自于本书的第一部分,适用于初学者。本章提供了有关c#中变量和运算符的信息。

int decimalNumber = int.Parse(Console.ReadLine());
string binaryConv = Convert.ToString(decimalNumber, 2);
char thirdBite = binaryConv[2];

3 个答案:

答案 0 :(得分:2)

int decimalNumber = int.Parse(Console.ReadLine()) | 4;

4是第三个二进制数字(100以2为基数= 4以10为基数)。

是二进制OR

答案 1 :(得分:2)

如果您只是 OR 4(二进制数为100)的数字怎么办?这样可以确保始终设置第3位:

using System;

public class Program
{
    public static void Main()
    {
        Console.Write("Enter integer value: ");
        int intVal = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("You entered: {0} (In binary this number is: {1})", intVal, Convert.ToString(intVal, 2));
        Console.WriteLine("{0} | 4 (100 in binary) = {1} (In binary this number is: {2})", intVal, intVal | 4, Convert.ToString(intVal | 4, 2));
    }
}

示例用法1:

Enter integer value: 2
You entered: 2 (In binary this number is: 10)
2 | 4 (100 in binary) = 6 (In binary this number is: 110)

用法示例2:

Enter integer value: 49
You entered: 49 (In binary this number is: 110001)
49 | 4 (100 in binary) = 53 (In binary this number is: 110101)

示例用法3:

Enter integer value: -6
You entered: -6 (In binary this number is: 11111111111111111111111111111010)
-6 | 4 (100 in binary) = -2 (In binary this number is: 11111111111111111111111111111110)

答案 2 :(得分:1)

欢迎。您的解决方案给您第三点。但这是通过转换为字符串来实现的,这比需要的字符串昂贵得多。

像这样获取第三位的值:

 bool thirdBit = (decimalNumber & (1 << 2)) != 0;

确保第3位设置为ON:

 decimalNumber = decimalNumber | (1 << 2);

确保将第3位设置为OFF:

 decimalNumber = decimalNumber & ~(1 << 2);