Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Распознание двоичной системы в AS (http://www.flasher.ru/forum/showthread.php?t=112520)

chingachgoog 30.05.2008 13:40

Распознание двоичной системы в AS
 
Собственно как можно распознать?
Разумеется, можно через 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

Цитата:

Сообщение от alexcon314 (Сообщение 743210)
А зачем "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

Цитата:

Сообщение от chingachgoog (Сообщение 743342)
Но лично для себя я действительно не представляю надобности в двоичных числах не кратных байту

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

chingachgoog 03.06.2008 11:40

Цитата:

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

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

iNils 03.06.2008 11:44

Цитата:

Сообщение от chingachgoog (Сообщение 743349)
Ну и какие проблемы? Флеш же не выделит под объект только 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

Цитата:

Сообщение от Alex_beginner (Сообщение 743356)
Двоичное число 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

Цитата:

Сообщение от Alex_beginner (Сообщение 743373)
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

Цитата:

Сообщение от Alex_beginner (Сообщение 743399)
Что то я Вас непонимаю! Я говорю о том что двоичное число "110" не равно "11000000"

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

Цитата:

Сообщение от Alex_beginner (Сообщение 743399)
а Вы мне говорите, что просто все зависит, для чего Вам понадобились двоичные представления.

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

Цитата:

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

Собственно об этом я в посте 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

Цитата:

Сообщение от Alex_beginner (Сообщение 743443)
chingachgoog!
А это по Вашему что?!!:

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

Цитата:

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

Цитата:

Сообщение от Alex_beginner (Сообщение 743443)
По Вашему 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

Цитата:

Сообщение от Alex_beginner (Сообщение 743455)
Chingachgoog! Попрошу Вас впреть такими фразами не бросаться.

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

Alex_beginner 03.06.2008 17:24

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


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

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