Встарой датской игре, положившей начало современной игре в кегли, в ряд вплотную друг к другу располагаются 13 деревянных кеглей. одним ударом шара можно сбить либо одну, либо две соседние кегли. игроки бросают поочерёдно по одному шару, а цель игры состоит в том, чтобы сбить последнюю кеглю. горный гном, с которым рипванвинкль играет эту партию, только сбил кеглю номер 2. рип должен выбрать одну из 22 возможностей: сбить одну из 12 кеглей или метнуть шар так, чтобы сбить любую из 10 пар соседних кеглей. как лучше поступить рипу, чтобы выиграть партию? предполагается, что оба игрока могут сбить любую кеглю или любую пару соседних кеглей и что каждая сторона располагает наилучшей стратегией.
Это результат использования двух разных стандартов обозначения единиц измерения количества информации (одно и то же обозначение единицы измерения может пониматься по разному).
Производители жёстких дисков пишут их объём в "десятичных" единицах (в них объём диска в цифрах получается больше, потому что сама единица меньше).
Десятичный терабайт: 1 ТБ = 10¹² байт = 1 000 000 000 000 байт
А в операционной системе компьютера обычно этот объём показывается в "двоичных" единицах (и в них значение объёма диска получается меньше, т.к. сама единица больше).
Двоичный терабайт: 1 ТБ = 2⁴⁰ байт = 1 099 511 627 776 байт
Двоичный гигабайт: 1 ГБ = 2³⁰ байт = 1 073 741 824 байт
Значит, ОС покажет объём диска так:
-в терабайтах: 10¹² / 2⁴⁰ ≈ 0,91 ТБ
-в гигабайтах: 10¹² / 2³⁰ ≈ 931,3 ГБ
Также, сколько то гигабайт система может зарезервировать для своих нужд, и доступный пользователю объём будет ещё меньше (как раз около 900 ГБ).
Объяснение:
Двоичные единицы были в компьютерной технике можно сказать с самого начала. И там они "родные", естественные- ведь компьютеры то построены на двоичной логике (почти все).
А отсюда вытекает количество адресуемой памяти- это степень двойки.
Микросхема памяти с четырьмя адресными входами позволяет обратиться к 2⁴ = 16-ти ячейкам памяти.
Шина адреса из 10 линий позволяет адресовать 2¹⁰ = 1024 ячейки.
Отсюда он, двоичный килобайт: 1 КБ = 2¹⁰ = 1024 байта
Близко к тысяче, поэтому стали обозначать по аналогии с приставкой "-кило" (к), но только большой буквой (К), чтобы хоть как то отличать от стандартной приставки СИ.
Уже тут приставки пишутся почти одинаково, но отличаются по значению, ведь стандартная "к" -это тысяча (1 000)
Потом памяти стало больше, и появился мегабайт:
1 МБ = 2²⁰ = 1 048 576 байта
Здесь различие в написании двоичных и десятичных приставок уже пропало полностью, но при этом стандартная приставка "-мега" (М) означает миллион (1 000 000).
Потом гигабайт, терабайт... С каждой следующей отличие от стандартных приставок сильно увеличивалось (для ТБ это уже значительные 10%).
И, был принят стандарт, использующий стандартные (десятичные) приставки (1 кБ = 1 000 Б, 1 МБ = 1 000 000 Б, итд), а двоичные единицы измерения предлагалось переименовать в КиБ (кибибайт), МиБ (мебибайт), итд.
Но конечно, путаницы стало только ещё больше, причём многократно. Ибо далеко не все хотят переходить на новый стандарт. Причин хоть отбавляй- от странного и длинного названия единиц, до того факта что всё начиная с самых истоков основано на старых единицах и их написании- вся документация, все программы, сама аппаратура даже... Да и людям так привычнее, так удобнее. Мало кто хочет переходить на десятичные единицы, а уж ещё меньше- на переименованные.
Хотя, конечно всё же некоторые переходят, особенно кому это выгодно- те же производители носителей информации- жёстких дисков, DVD-дисков, флешек даже.
И чем больше используют десятичных единиц, тем больше путаницы становится.
P.S. В общем, крепитесь, ребята. Нам в этом компоте всю жизнь придётся вариться. Если что непонятно- смотрите полный размер в байтах (где это доступно, конечно). А недоступно- читайте теорию или справку наконец уж. И да пребудет с вами Сила :)
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace zn
{
class Program
{
public static void Main(string[] args)
{
int sum = 0;
int m = 1;
Console.Write("Введите n > ");
int n = Convert.ToInt32(Console.ReadLine());
for(int i=0; i<n; i++)
{
Console.Write("Введите число > ");
int c = Convert.ToInt32(Console.ReadLine());
if (c.ToString().EndsWith("3") || c.ToString().EndsWith("4"))
sum += c;
if (c % 5 == 0 && c % 3 != 0)
m *= c;
}
Console.WriteLine("Сумма чисел заканчивающихся на 3 или на 4: " + sum);
Console.WriteLine("Произведение чисел, делящихся на 5, но не на 3: " + m);
Console.ReadKey();
}
}
}