Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по C#

Кирилл Петухов Ученик (113), на голосовании 1 месяц назад
Почему если я введу строку
Console.WriteLine(0xFF);
У меня выйдет не 1515 а 255?
Голосование за лучший ответ
Sergio 2.1 Оракул (67269) 2 месяца назад
В C#, префикс 0x указывает, что число записано в шестнадцатеричной (hex) системе счисления. F в шестнадцатеричной системе равно 15 в десятичной.

0xFF = (15 × 16¹) + (15 × 16⁰) = 240 + 15 = 255 в десятичной системе.
Максим Искусственный Интеллект (213116) 2 месяца назад
Потому что FF в шестнадцатеричной системе это 255. То есть максимально возможное число для одного байта: 1111 1111. Если же ты решил, что F это 15, значит FF это 1515, то так это не работает, потому что после F идет 10, а это 16.
Семён Куликов Мыслитель (5813) 2 месяца назад
Потому-что 0xFF это 255, а 0xF это 15, а вот так будет 1515:
 using System; 
public class Program {
public static void Main() {
Console.WriteLine(0xF + "" + 0xF);
}
}

Ну или вот так:
 using System;				 
public class Program {
public static void Main(){
Console.WriteLine((0xF).ToString() + (0xF).ToString());
}
}

Ну или вот так:
 using System;				 
public class Program {
public static void Main(){
for(var j=0; j<2; j++) Console.Write((0xF).ToString());
Console.WriteLine("");
}
}
Jurijus Zaksas Искусственный Интеллект (445723) 2 месяца назад
Потому что по умолчанию любой целочисленный литерал приводится к типу int.
Похожие вопросы