PDA

Просмотр полной версии : Распознание двоичной системы в AS


chingachgoog
30.05.2008, 13:40
Собственно как можно распознать?
Разумеется, можно через parseInt("101010_мое_число",2).
Но флеш понимает специальные префиксы для восьмеричной и шестнадцатиричной системы:


trace(123) //123 - десятичная
trace(0123) //83 - восьмеричная
trace(0x123) //291 - шестнадцатиричная


Не нашел, чего-нибудь подобного для двоичной системы.
?

Alex_beginner
30.05.2008, 14:21
А он двоичные числа и не распазнает.
Попробуй напиши:

trace(101010001);
trace((101010001).toString(10));

Выведет одно и тоже

aksios
30.05.2008, 14:31
(число).toString(х), где х - разрядность системы исчесления - для двоичной это 2.

iNils
30.05.2008, 15:57
Или так
parseInt("1010", 2)

chingachgoog
30.05.2008, 16:48
про parseInt я написал - с этим проблем нет, но для других чисел есть префиксы, позволяющие напрямую работать с системами счисления. Неужели нет, что-нибудь типа 0b10101? Даже на БК-0001 такое было :)

iNils
30.05.2008, 17:13
Нету.
И на БК-0001 это не было, было в софте для него :D

chingachgoog
02.06.2008, 15:06
Ну нет, так будет :)


_global.__resolve=function (name) {
if (name.charAt(0)=='b'){
var z=name.slice(1)
if (!(z.length%8)) {
return parseInt(z,2)
}
}
};

myBinary=b10010011+20
trace(myBinary)

alexcon314
02.06.2008, 15:15
А зачем "if (!(z.length%8))" ?

chingachgoog
02.06.2008, 15:29
А зачем "if (!(z.length%8))" ?


Мне трудно представить надобность в двоичной записи, не кратной байту.

Alex_beginner
03.06.2008, 10:31
Мне трудно представить надобность в двоичной записи, не кратной байту.

Это как! 8 битовое значение Вы представляете, а 9 битовое уже нет.
На мой взгляд alexcon314 верно заметил, на счет контроля кратности 8-ке. Его просто нужно убрать. И код сократиться и любое из возможных значении двоичной системы исчисления будет вычислено.

chingachgoog
03.06.2008, 11:10
Я не против :) Можно убрать. Но лично для себя я действительно не представляю надобности в двоичных числах не кратных байту, к томуже это защитит от неопределенной переменной, также начинающейся с буквы "b".

iNils
03.06.2008, 11:26
Но лично для себя я действительно не представляю надобности в двоичных числах не кратных байтуЕсть три объекта, с двумя состоянияниями on или off. Поэтому на каждый объект приходится по биту, всего три. Остальные 5 битов будут избыточны. Ну или объектов будет 9 :D

chingachgoog
03.06.2008, 11:40
Есть три объекта, с двумя состоянияниями on или off. Поэтому на каждый объект приходится по биту, всего три. Остальные 5 битов будут избыточны. Ну или объектов будет 9 :D

Ну и какие проблемы? Флеш же не выделит под объект только 3 бита или 9. Он байт или слово выделит. Так и нам какая наплевать? Пишем b11000000 и работаем с нужным числом бит.
Вообще смысл всей этой затеи в наглядности для программиста, а она не теряется, что мы пишем b110 или мы пишем b11000000 Вообщем без разницы - как кому угодно пользуйтесь :)

iNils
03.06.2008, 11:44
Ну и какие проблемы? Флеш же не выделит под объект только 3 бита или 9. Он байт или слово выделит.Ну и пусть выделяет.
Но мне не надо будет писать b00000001, b00000010 и b00000100, когда достаточно b001, b010 и b100. А сейчас я получаю NaN
_global.__resolve = function (name) {
if (name.charAt (0) == 'b') {
var z = name.slice (1);
if (!(z.length % 8)) {
return parseInt (z, 2);
}
}
};
myBinary = b001 + b010 + b100;
trace (myBinary);

chingachgoog
03.06.2008, 11:49
Все-таки программисты самые ленивые люди на свете :)

iNils
03.06.2008, 11:52
Лень тут совсем не причем. Так читабельнее. И как я выше упомянул, когда объектом будет уже 9, не надо будет писать 16 чисел.

Alex_beginner
03.06.2008, 12:07
Вообще смысл всей этой затеи в наглядности для программиста, а она не теряется, что мы пишем b110 или мы пишем b11000000 Вообщем без разницы - как кому угодно пользуйтесь

Обратите внимание:

trace(parseInt("110",2));
trace(parseInt("11000000",2));

Будет ни одно и тоже. Двоичное число 110 дополняется нулями до 8-ки не справа, а слева.

iNils
03.06.2008, 12:26
Двоичное число 110 дополняется нулями до 8-ки не справа, а слева.Это логично. А какие числа делают наоборот?

Alex_beginner
03.06.2008, 12:38
iNils!
А вот пост chingachgooga посмотрите. Он считает, что b110 тоже самое что и b11000000:)

iNils
03.06.2008, 12:45
Ну, видно, что он ошибся :)

chingachgoog
03.06.2008, 13:14
iNils!
А вот пост chingachgooga посмотрите. Он считает, что b110 тоже самое что и b11000000:)


Ошибки тут нет. :) Просто все зависит, ДЛЯ ЧЕГО вам понадобились двоичные обозначения, не для того ведь, чтобы 2+2 сложить?

_global.__resolve = function (name) {
if (name.charAt (0) == 'b') {
var z = name.slice (1);
if (!(z.length % 8)) {
return parseInt (z, 2);
}
}
};

insert = b01010000
update = b11010000
resultat=(insert & update)
trace(resultat.toString(2)); // 1010000, т.е. 01010000

_global.__resolve = function (name) {
if (name.charAt (0) == 'b') {
return parseInt (name.slice (1), 2);
}
};

insert = b0101
update = b1101
resultat=(insert & update)
trace(resultat.toString(2)); // 101, т.е. 0101

Alex_beginner
03.06.2008, 13:41
Что то я Вас непонимаю! Я говорю о том что двоичное число "110" не равно "11000000", а Вы мне говорите, что просто все зависит, для чего Вам понадобились двоичные представления. А вот десятичные 20 равно десятичному 50?!!!!!!:D Или тоже все зависит от того, для чего понадобились десятичные обозначения.:D

alexcon314
03.06.2008, 14:46
имея скромный опыт, тем не менее хочу отметить, что юзать бинари мне приходилось только в контексте, упомянутом Inils'ом. Т.е. имея ОГРАНИЧЕННЫЙ размер выделенной под нужды программы памяти приходилось задавать состояния объектов, занося инфу в биты. Но никак не для сложения, вычитания, деления и пр.
Зачем тогда языки высокого уровня вообще нужны? В сях многие битовы константы имеют стринговый дефайн для УДОБСТВА.

chingachgoog
03.06.2008, 15:41
Что то я Вас непонимаю! Я говорю о том что двоичное число "110" не равно "11000000"


А я нигде и не говорил, что они равны


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


Разумеется.
Какая разница в каком числе проверяется, например, состояние второго слева бита?
Что это будет 110, что 11000000 - результат будет одинаковый - единица. (см. пример выше)


В сях многие битовы константы имеют стринговый дефайн для УДОБСТВА.


Собственно об этом я в посте 13 и сказал. Вся эта затея - для наглядности.

Alex_beginner
03.06.2008, 16:03
chingachgoog!
А это по Вашему что?!!:

Вообще смысл всей этой затеи в наглядности для программиста, а она не теряется, что мы пишем b110 или мы пишем b11000000 Вообщем без разницы - как кому угодно пользуйтесь

По Вашему b110 отличается от b11000000 только наглядностью:).

Wolsh
03.06.2008, 16:16
Alex_beginner, если Вам так нравится привязываться к словам, не стараясь вникнуть в смысл, то хоть не коверкайте:что мы пишем b110 или мы пишем b11000000 Вообщем без разницы
По Вашему b110 отличается от b11000000

chingachgoog
03.06.2008, 16:30
chingachgoog!
А это по Вашему что?!!:


Это увы, пробелы вашего учителя по русскому :)
Перевожу:


Вообще смысл всей этой затеи в наглядности для программиста, а она [наглядность] не теряется, что мы пишем b110 или мы пишем b11000000 [предложение закончено] Вообщем без разницы - как кому угодно пользуйтесь



По Вашему b110 отличается от b11000000 только наглядностью:).


Наоборот :) (вот же умение прочитать! Наверное, я совсем заумно пишу) Наглядность у них одинаковая. Что касается отличий, то по-моему только вы увидели, что эти числа якобы где-то у меня равны. Я же писал, что без разницы какие числа использовать - длинные (кратные байту) или короткие (например 3-х битные), т.к. наглядность в обоих случаях остается.

Alex_beginner
03.06.2008, 16:35
Wolsh!
Во-первых не только к словам, но и к математическим выражениям и числам во всех представлениях. А потом мне непонятно зачем Вы процитировали chingachgooga!
что мы пишем b110 или мы пишем b11000000 Вообщем без разницы еще раз доказывая тем самым, что я прав и "110" в двоичной системе НЕ равно "11000000" также в двоичном представлении.
Во-вторых. Если Вы уж цитируете меня, то цитируйте фразы до конца, а то полуправда хуже лжи.

Я вот об этом:
По Вашему b110 отличается от b11000000
А вот как у меня:
По Вашему b110 отличается от b11000000 только наглядностью

Вообще-то спор яйца выйденного нестоит, и я в данной ситуации если бы ошибся таким образом, взял бы и просто согласился. А щас получится, что новички читая форум сочтут, что числа то "110" и "11000000" равны. Как Вы думаете хорошо ли это по отношению к новичкам?

Wolsh
03.06.2008, 16:46
Могу только развести руками) Таким новичком я никогда не был, и здесь таких не встречал. На остальное Вам ответил chingachgoog. Перечитайте еще раз прежде чем постить ответ.

Alex_beginner
03.06.2008, 16:51
Chingachgoog! Попрошу Вас впреть такими фразами не бросаться:
Это увы, пробелы вашего учителя по русскому
Здесь Вам не сбор идиотов!!!:eek:

И потом, если уж Вы указываете мне или другим участникам форума на синтаксические и орфографические ошибки русского языка, то будьте добры сами их не делать:

что мы пишем b110 или мы пишем b11000000 Вообщем без разницы -
точка между "b11000000" и "Вообщем" отсутсвует. Предложение не закончено.:taunt:
Поэтому, я настаиваю на том, что Вы сделали ошибку. Просто нехотите щас признаться в этом.

chingachgoog
03.06.2008, 17:11
Chingachgoog! Попрошу Вас впреть такими фразами не бросаться.


Прошу прощения за неудачную шутку.
Насчет остального спорить не буду - публика сама разберется кто прав.

Alex_beginner
03.06.2008, 17:24
Извинение принято! Думаю, нет смысла дальше спорить, это не столь уж важная тема, чтобы друг друга "грызть" до такой степени.