Просмотр полной версии : из 10 в 2 систему исчисления
Надо перевести и 10 системы исчисления в 2
алгоритм таков
возмем число 40(dec)
аналог в двоичной системе такой 101000(bin)
40 / 2 = 20 остаток 0
20/2 = 10 остаток 0
10/2 = 5 остаток 0
5/2= 2 остаток 1
2/2 = 1 остаток 0
конечный остаток 1
40(dec) = 101000(bin)
x = 40;
binM = new Array();
for (; x>2; ) {
bin = x %= 2;
x = Math.floor(x/2);
binM.push(bin);
}
bin.reverse();
trace(bin);
вроде все вероно а не работает :confused:
зарание блогодарен
Dimonius
10.10.2003, 17:00
for (; x>2; ) - это что за конструкция?
llllllllll
10.10.2003, 17:02
trace((40).toString(2))
к сожелению toString не подходит
а for(;a>2;) это нармальная конструкция ну можеш проверить
for (; i<10; ) {
trace((40).toString(2));
i++;
}
Пушистик
10.10.2003, 20:55
Dimonius, эт можно обяснить типа тем, что i не задана и Flash распознает как как false(false=0)...
opex, а чем тя не устраивает toString(2)?:)
мне лабу надо сдать
а преподу надо так
sultan_M
11.10.2003, 16:56
Всем привет! :)
Я написал следующий код 6 месяцев назад, заметив что AS не представляет никаких встроенных Math.методов, которые переводят 16, 8, 2 в 10 системы исчисления, и 10 системы исчисления в 2 :)
// =========== Conversions Between Systems =========== \\
//
// Sultan Majed Al-Otaibi 2003
//
//============*****************************============\\
var o = Math;
o.fromHexToDec = function(x){
var digs = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'];
var a = x.toUpperCase().split("");
a.reverse();
var i = 0;
var w, result, b;
while(i < a.length){
for(var j=0; j < digs.length;j++){
if(a[i] == digs[j]){
b = true;
w = Math.pow(16, i);
result += j * w;
break;
}else{
b = false;
}
}
if(!b){
trace('Wrong Arguments');
return b;
}
i++;
}
return result;
}
o.fromOctToDec = function(x){
var a = String(x).split('');
a.reverse();
var i = 0;
var w, result;
while(i < a.length){
w = Math.pow(8, i);
result += a[i] * w;
i++;
}
return result;
}
o.fromBinToDec = function(x){
var a = String(x).split('');
if(a.length > 16){
trace('Wrong Arguments');
return false;
}
a.reverse();
var i = 0;
var w, result;
while(i < a.length){
w = Math.pow(2, i);
result += a[i] * w;
i++;
}
return result;
}
o.fromDecToBin = function(x){
if(!x){return 0;}
var result = [];
while(x){
var i = int(x/2);
if(i * 2 == x){
result.unshift(0);
}else{
result.unshift(1);
}
x = i;
}
return result.join('');
}
Теперь попробуйте писать например:
trace(Math.fromDecToBin(8)); // результат: 1000
Удачи :)
llllllllll
11.10.2003, 17:18
Да для лабы, наверно это не подойдет, хотя сама ситуация довольно странная :)
А вот выше написанное вообще непоняно зачем нужно во флеше ...
trace(Math.fromHexToDec("FF"))
trace(parseInt("FF",16))
:)
Techmaker
11.10.2003, 19:07
this.num=555;this.dec=this.num;trace("число: "+this.dec+newline+"начнём:");this.bin=new Array()
while(this.dec>0){trace(Math.floor(this.dec)+" / 2 (делим)");if(Math.floor(this.dec)==this.dec){this.bin[this.count++-1]="0"}else{this.bin[this.count++-1]="1";this.dec=Math.floor(this.dec)}this.dec/=2}delete this.count;delete this.dec
this.bin.reverse();for(this.count=0;this.count<this.bin.length;this.count++){this.new_bin+=this.bin[this.count]}delete this.count;delete this.bin;trace("результат: "+this.new_bin);delete this.new_bin;trace("проверка: "+Number(this.num).toString(2));delete this.num
:D прикольнулся
sultan_M
11.10.2003, 21:08
2llllllllll
Спасибо за объясние :)
Я не прочитал о функции parseInt .. Ну что ж .. С выщепересчислённым кодом ( метод fromDecToBin ) стало удобно перевести 10 системы исчисления в 2 :)
Techmaker
11.10.2003, 22:36
Оригинал написал(а) sultan_M
Ну что ж .. С выщепересчислённым кодом ( метод fromDecToBin ) стало удобно перевести 10 системы исчисления в 2 :)
ну канешна :) :D
trace(parseInt(Number(15151486).toString(2),2))
sultan_M
12.10.2003, 09:28
2Techmaker
Гы .. Да ты прав :D
trace(Number(10).toString(2)) // результат: 1010
:D
trace((10).toString(2))
llllllllll
13.10.2003, 17:55
trace(1010);
:D
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.