2013-09-04 3 views
1

Я видел собственно байт инициализации массива, как говорятСмешение массив

byte[] a = new byte[8]; 

Но что это значит?

byte[] bitfield = new byte [0xFFFFFFF/8]; 
n = 18; // some integer 
bitfield [n/8] |= 1 << (n % 8); 

Также объясните, что означает 0xFFFFFFF/8.

+4

Посмотрите Java-операторы и шестнадцатеричные представления. –

ответ

2
0xFFFFFFF/8 

просто значение (268435455), деленное на 8, инициализации массив такого размера (усечены, конечно).

На следующем шаге мы получаем n и установить элемент n/8 или 2 из-за усечения, чтобы быть тем же элемент с побитовым ИЛИ к 1<<(n%8) или 1 смещается влево (n%8) бит. Это эквивалентно:

bitfield[n/8] = bitfield[n/8] | (1 << (n % 8)) 

Обратите внимание, что 1<<(n%8) равно 2^(n%8) где (n%8) есть остаток, когда n делится на 8.

+2

'(округленный, конечно) .'. Я бы изменил это на '(усеченный, конечно)' – Cruncher

0

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

0

0xFFFFFFFF - целочисленный литерал в шестнадцатеричном формате. Затем он делится на 8.

Смежные вопросы