Помощ по домашното C# 1 - C# Fundamentals - 03. Operators and Expressions - 13. Modify bit


0

Здравейте !

Аз направих задачата и ето го кода:

http://pastebin.com/9YZ75ank

Но имам грешка и знам къде е но не знам как да го оправя.

Грешката ми е, че по някаква причина позицията на бита не може да бъде повече от 18 ако напиша 50 например пак ще си стои на 18 а ако е по-малко от 18 си работи.

Благодаря предварително :)




Отговори



1
Задай ulong на маската.

от martinboykov (1112 точки)


1

Ето и малко по различен начин за решаване на задачката.

using System; class ModifyBit { static void Main() { // Input ulong n = ulong.Parse(Console.ReadLine()); byte p = byte.Parse(Console.ReadLine()); ulong v = ulong.Parse(Console.ReadLine()); // Output n &= ~(1U << p); // Clear bit p (set to 0) n |= (v << p); // Set to v in bit p Console.WriteLine(n); } }

Добра практика е да изтриваш излишните неща от кода, като namespace и using - и, които не се използват. Така кода става по-четим и разбираем. 

Успех.

Ето и една много полезна страничка за побитовите операции: линк .


от IvanAngelov (140 точки)