我正在尝试编写其中第三位始终为1的代码。
我已经完成了以下操作来检测第三位,但是我不知道如何将其更改为显示第三位,因此应该在不使用循环的情况下完成操作,因为该练习来自于本书的第一部分,适用于初学者。本章提供了有关c#中变量和运算符的信息。
int decimalNumber = int.Parse(Console.ReadLine());
string binaryConv = Convert.ToString(decimalNumber, 2);
char thirdBite = binaryConv[2];
答案 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);