LINUX.ORG.RU

/24 - количество бит указывающих сеть. Как-то так.

skiminok1986 ★★★★★
()

Вычисляется по количеству постоянных бит.
255.255.255.0 == FF FF FF 00 == 11111111 11111111 11111111 00000000
Здесь ты видишь 24 единицы. Потому /24.

Ramen ★★★★
()
Ответ на: комментарий от Ramen

Это то как раз понятно) Вопрос скорее в том, как это грамотно посчитать. Пока я обощелся грязным хаком - тупо набил таблицу возможных значений, для данной задачи сойдет, но в будущем чувствую придется это все-таки осваивать.

з.ы. Вот они, минусы освоения программирования исключительно на практике

aix27249
() автор топика

Каждый октет 32-двух битного адреса или маски состоит из 8 битов.

11111111.11111111.00000000.00000000 -- это 255.255.0.0 и /16

11111111.11111111.11110000.00000000 -- это 255.255.240.0 и /20

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

edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

О неполных октетах:
При выборе маски подсети разрешается использовать маску только с подряд идущими слева единицами. Поэтому для каждого октета есть только 9 допустимых комбинаций:

00000000 (0)
10000000 (128)
11000000 (192)
11100000 (224)
11110000 (240)
11111000 (248)
11111100 (252)
11111110 (254)
11111111 (255)

edigaryev ★★★★★
()
Ответ на: комментарий от aix27249

/******************************************************************************
****************/
template< typename T > inline
size_t BitCount( T value )
{
	size_t res = 0;

	while( value != 0 )
	{
		value &= value - 1;
		++res;
	}

	return res;
}

lester ★★★★
()

my $mask=unpack("B*", pack("N", $intmask));
$mask=~s/0//g;
$mask=length($mask);

iSage ★★★★
()
Ответ на: комментарий от edigaryev

> При выборе маски подсети разрешается использовать маску только с подряд идущими слева единицами.

Это вообще-то неправда.

Lumi ★★★★★
()

В общем случае перевести так нельзя, только на практике в большинстве случаев - да. Нужно чтобы маска была вида 111...10....0. Вот обратную сторону всегда можно. Поэтому такое нужно делать только в случае, когда хочется юзеру вывести понятнее.
> Ну ни фига себе, Ъ-метод.
Не совсем Ъ. Во-первых нужна проверка, что можно свести к /N виду. Во-вторых количество бит __builtin_popcount() считает быстрее.

snizovtsev ★★★★★
()

Кажется, это будет 31-floor(log2(not(ip)))

KRoN73 ★★★★★
()
Ответ на: комментарий от svu

К счастью, ни разу не попадались, да и в ступороз это вгоняет, когда нужно подсетки посчитать. Но, теоретически работать дырявая маска будет также, как и сплошная.

Lumi ★★★★★
()
Ответ на: комментарий от hizel

Несомненно, но этот вид не закон и строгого обязательного исполнения не требует.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

> К счастью, ни разу не попадались, да и в ступороз это вгоняет, когда нужно подсетки посчитать. Но, теоретически работать дырявая маска будет также, как и сплошная.

В спецификацию ткнуть не могу, т.к. лень, но ifconfig на дырявую маску мне выдал SIOCSIFNETMASK: Invalid argument.

gaa ★★
()
Ответ на: комментарий от gaa

Я это читал в учебнике по маршрутизации. Если интересно, могу дома поискать его. ip тоже не проглатывает такие маски, поэтому я могу только цитировать теорию.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

> Я это читал в учебнике по маршрутизации. Если интересно, могу дома поискать его.

Не утруждайся, я могу вообразить в уме, как это может работать.

> ip тоже не проглатывает такие маски, поэтому я могу только цитировать теорию.


Ну так и хрен с этими дырявыми масками, раз их никто не понимает :)

gaa ★★
()
Ответ на: комментарий от gaa

> Ну так и хрен с этими дырявыми масками, раз их никто не понимает :)
А потом любители стандартов будут катить бочку на тех, кто их ниасилил! ;)

svu ★★★★★
()
Ответ на: комментарий от svu

>> Ну так и хрен с этими дырявыми масками, раз их никто не понимает :)
> А потом любители стандартов будут катить бочку на тех, кто их ниасилил! ;)


Их неосилил в том числе и стандарт, емнип.

gaa ★★
()
Ответ на: комментарий от svu

Наоборот хорошо -- хигифицированная работа с сетью. Представляю объём головной боли, если кому-то вдруг такое бы приспичило.

Lumi ★★★★★
()

Непонятно, зачем на маску отводить 32 бита, если она не может быть дырявой. Ей тогда хватит пяти бит :)

KRoN73 ★★★★★
()
Ответ на: комментарий от gaa

> Их неосилил в том числе и стандарт, емнип.

Дочитал до rfc-917, надо всё-таки искать этот учебник, возможно насчёт дырявых масок автор там всё-таки сильно потеоретизировал.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

есть rfc 4632 - Internet Best Current Practices
видимо в диких интернетах работает только cidr
у себя в локалке можешь воротить всё что хочешь
например dlink dwl 2100 кушает дырявую маску

hizel ★★★★★
()
Ответ на: комментарий от hizel

> есть rfc 4632 - Internet Best Current Practices

С неё и начал в сторону уменьшения номеров.
В остальном полностью согласен. :)

Lumi ★★★★★
()
Ответ на: комментарий от KRoN73

Для быстроты наложения маски? По идее достаточно только логических операций

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от KRoN73

>Ей тогда хватит пяти бит :)
Не хватит. Вот шести уже хватит. Но накладывать такую маску будет неудобно.

Ramen ★★★★
()

В 14 лет на школьном факультативе изучали арифметику в системах счисления с произвольным основанием. Того единственного часа занятий мне и сейчас хватает, чтобы не задаваться такими вопросами. Чего и Вам советую. Сейчас я даже не могу сказать, знаю ли я это на память или считаю за секунду-другую. Как-то само всплывает.

Все эти сишные коды, таблицы, калькуляторы -- от лукавого. Ты алгоритм пойми, сложи-умножь столбиком 13-ричные числа, подели уголком 7-ричные, переведи из 3-ричной в 11-ричную и после этого вся эта чешуя тебе будет - семечки.

ansky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.