Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нубовский вопрос по битам (http://www.flasher.ru/forum/showthread.php?t=156339)

VitaliyKrivtsov 20.05.2011 01:32

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

t4arty 20.05.2011 02:01

position поставить 1 в byteArray ?

Psycho Tiger 20.05.2011 02:07

@t4arty, Вы о чем?
Код AS3:

byte & 0xFE


ShadowsInRain 20.05.2011 05:16

Что-то не замечал однобайтовых в АС3.

Psycho Tiger уже дал ответ к этой конретной ситуации, но, всё-же, на будущее.
Цитата:

Для обычого 32-битного выключение любого бита:
Код AS3:

result = number & ~(1 << bit_index);

Включение:
Код AS3:

result = number | (1 << bit_index);

Переключение:
Код AS3:

result = number ^ (1 << bit_index);

Подходит для знакового и беззнакового (int или uint).

Если нужно сначала извлечь единственный байт из числа:
Код AS3:

byte = (number >> byte_index*8) & 0xFF;

В этом случае нужный байт окажется младшим байтом.

---
byte_index — номер байта, от 0 до 3
bit_index — номер бита, от 0 до 31 (до 7, если работать только с младшим с байтом)

VitaliyKrivtsov 20.05.2011 13:14

ShadowsInRain, Psycho Tiger, спасибо за помощь.
Дошел к битам и байтам, а как сними работать - толком не разобрался.

Psycho Tiger 20.05.2011 23:08

Давно баловался написанием статей. Вот про биты.

ChuwY 20.05.2011 23:25

лучше будет
Код AS3:

byte & ~0x1

так не зависит от размерности byte

dimarik 20.05.2011 23:41

Цитата:

Сообщение от Psycho Tiger (Сообщение 997399)
@t4arty, Вы о чем?
Код AS3:

byte & 0xFE


Двойка тебе, Тигра!
Нубский вопрос был о первом бите, а не нулевом ) & 0xFD пральный ответ.

Добавлено через 1 минуту
Ладно, шучу. Он просто не знает, что нулевой бит самый младший.

Psycho Tiger 21.05.2011 00:22

А я маскировал
Цитата:

самый младший
:P

VitaliyKrivtsov 21.05.2011 04:27

Цитата:

Ладно, шучу. Он просто не знает, что нулевой бит самый младший.
Да, тут я чуток сглупил. Речь действительно о нулевом бите. Почитаю Psycho Tiger, а еще нашел отличную статью - перевод на русский первой главы книге о битах из сайта ByteArray.org. Автора не помню. Может и поумнею :)


Часовой пояс GMT +4, время: 04:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.