Просмотр полной версии : Распознание двоичной системы в 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));
Выведет одно и тоже
(число).toString(х), где х - разрядность системы исчесления - для двоичной это 2.
Или так
parseInt("1010", 2)
chingachgoog
30.05.2008, 16:48
про parseInt я написал - с этим проблем нет, но для других чисел есть префиксы, позволяющие напрямую работать с системами счисления. Неужели нет, что-нибудь типа 0b10101? Даже на БК-0001 такое было :)
Нету.
И на БК-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".
Но лично для себя я действительно не представляю надобности в двоичных числах не кратных байтуЕсть три объекта, с двумя состоянияниями on или off. Поэтому на каждый объект приходится по биту, всего три. Остальные 5 битов будут избыточны. Ну или объектов будет 9 :D
chingachgoog
03.06.2008, 11:40
Есть три объекта, с двумя состоянияниями on или off. Поэтому на каждый объект приходится по биту, всего три. Остальные 5 битов будут избыточны. Ну или объектов будет 9 :D
Ну и какие проблемы? Флеш же не выделит под объект только 3 бита или 9. Он байт или слово выделит. Так и нам какая наплевать? Пишем b11000000 и работаем с нужным числом бит.
Вообще смысл всей этой затеи в наглядности для программиста, а она не теряется, что мы пишем b110 или мы пишем b11000000 Вообщем без разницы - как кому угодно пользуйтесь :)
Ну и какие проблемы? Флеш же не выделит под объект только 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
Все-таки программисты самые ленивые люди на свете :)
Лень тут совсем не причем. Так читабельнее. И как я выше упомянул, когда объектом будет уже 9, не надо будет писать 16 чисел.
Alex_beginner
03.06.2008, 12:07
Вообще смысл всей этой затеи в наглядности для программиста, а она не теряется, что мы пишем b110 или мы пишем b11000000 Вообщем без разницы - как кому угодно пользуйтесь
Обратите внимание:
trace(parseInt("110",2));
trace(parseInt("11000000",2));
Будет ни одно и тоже. Двоичное число 110 дополняется нулями до 8-ки не справа, а слева.
Двоичное число 110 дополняется нулями до 8-ки не справа, а слева.Это логично. А какие числа делают наоборот?
Alex_beginner
03.06.2008, 12:38
iNils!
А вот пост chingachgooga посмотрите. Он считает, что b110 тоже самое что и b11000000:)
Ну, видно, что он ошибся :)
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 только наглядностью:).
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" равны. Как Вы думаете хорошо ли это по отношению к новичкам?
Могу только развести руками) Таким новичком я никогда не был, и здесь таких не встречал. На остальное Вам ответил 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
Извинение принято! Думаю, нет смысла дальше спорить, это не столь уж важная тема, чтобы друг друга "грызть" до такой степени.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.