Согласие на обработку персональных данных.

08.04.2019
Новый выпуск журнала Автоматизация и программирование.

27.04.2019
Новые видео и статья Процедура Dispose.

23.04.2019
Новые видео и статья Как передать массив в функцию.

19.04.2019
Новая задача Как преобразовать секунды в часы-минуты-секунды.

07.03.2019
Новый выпуск журнала Автоматизация и программирование.



Раздел: Задачи / Простейшие /

Как преобразовать байт в килобайт

Условие задачи 6.1.2.30

Задача 6.1.2.30
Дана величина А, выражающая объём информации в байтах. Перевести А в более крупные единицы измерения информации.

Если вы изучали информатику в школе, то вы помните, что наименьшая единица измерения информации - это бит (разряд). Бит может хранить одно из двух значений: ДА (1) или НЕТ (0). Это упрощённо )))

Однако обычно наименьшей единицей измерения информации считают байт (Б), который содержит 8 битов. То есть с помощью одного байта можно представить 256 чисел - от 0 до 255.

Как видите, в байте помещается слишком мало данных, поэтому имеются более крупные единицы информации: килобайт (кБ), мегабайт (МБ), гигабайт (ГБ), терабайт (ТБ) и т.д. Все приставки и множители СИ вы можете найти здесь.

Однако эти приставки касаются десятичной системы. В информатике всё несколько сложнее, потому что в основе исчисления лежит не 10, а число 2 (так как всё опирается на двоичную систему). Поэтому возникла некая путаница, поскольку существуют специальные единицы, такие как кибибайт (КиБ), мебибайт (МиБ), гибибайт (ГиБ), тебибайт (ТиБ) и т.п., которые увеличивают на 10 степень числа 2. То есть:

1 Б = 20 = 1 Б
1 КиБ = 210 = 1024 Б
1 МиБ = 220 = 1024 кБ = 1048576 Б
1 ГиБ = 230 = 1024 МБ = 1048576 кБ = 1073741824 Б
1 ТиБ = 240 = 1024 ГБ = 1048576 МБ = 1073741824 кБ = 1099511627776 Б

Поэтому 1 КиБ равен не 1000 Б, а 1024 Б и так далее. Путаница же в том, что не всегда единицы указываются правильно. То есть, производитель, например, может указать 1 ГБ, имея в виду 1 ГиБ, и наоборот - в зависимости от того, что ему выгоднее (кстати, это одна из причин, почему, например, ёмкость флешки или жёсткого диска, которая отображается в системе, всегда меньше значения, которое указано на упаковке или корпусе).

Почему производители почти никогда не пишут КиБ, МиБ и т.п.? Потому что стандарты противоречивы - одни говорят, что КБ - это килобайт (то есть 1000Б), а другие, что КБ - это кибибайт (то есть 1024Б). Ну а вообще так сложилось исторически, что практически всегда, когда мы говорим килобайт и т.п., мы подразумеваем, что он равен 1024 байта.

В общем, как видите, задача может оказаться не такой простой, как мы рассчитывали.

Наиболее сложно (хотя всё относительно) будет определить дробную часть результата в случае с “киби”, “меби” и т.п. Поэтому именно этот случай мы и рассмотрим, то есть будем решать задачу, переводя байты в “кибибайты”, “мебибайты” и т.п.

Решение задачи 6.1.2.30 на Паскале
 
program mytask;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  x       : Double;
  Amount  : QWORD;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Write('Enter the amount, in bytes : ');
  ReadLn(Amount);

  x := Amount / 1024;
  WriteLn('     = ', x:0:2, ' kB');

  x := x / 1024;
  WriteLn('     = ', x:0:2, ' MB');

  x := x / 1024;
  WriteLn('     = ', x:0:2, ' GB');

  x := x / 1024;
  WriteLn('     = ', x:0:2, ' TB');

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.
Решение задачи 6.1.2.30 на С++
#include <cstdlib>
#include <iostream>
#include <iomanip>      //!!! Подключить этот файл

using namespace std;

double x;
unsigned long long Amount;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  cout << "Enter the amount, in bytes : ";
  cin >> Amount;

  //Установить вывод с фиксированной точкой и
  //точностью 2 знака после запятой
  cout << fixed << setprecision(2);

  x = Amount / 1024;
  cout << "     = " << x << " kB" << endl;

  x = x / 1024;
  cout << "     = " << x << " MB" << endl;

  x = x / 1024;
  cout << "     = " << x << " GB" << endl;

  x = x / 1024;
  cout << "     = " << x << " TB" << endl; 
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

Как преобразовать байт в килобайт

ПРИМЕЧАНИЕ
В С++, как всегда, всё несколько иначе. Также можно столкнуться с некоторыми погрешностями. Точнее, отличиями от такой же программы на Паскале из-за особенностей форматирования, представления чисел и т.п.


Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика