PDA

Просмотр полной версии : из 10 в 2 систему исчисления


opex
10.10.2003, 16:47
Надо перевести и 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))

opex
10.10.2003, 17:12
к сожелению 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)?:)

opex
11.10.2003, 00:54
мне лабу надо сдать
а преподу надо так

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

lexass
13.10.2003, 17:32
:D

trace((10).toString(2))

llllllllll
13.10.2003, 17:55
trace(1010);

:D

Wolodia
14.10.2003, 09:49
Output window:

1010