Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Bitwise shift

Name: Anonymous 2008-12-22 15:32

I'm bitwise shifting integers(optimized algorithms).
The problem is when they switch unsigned/signed representation and the results are wrong.Can anyone explain how to fix this?

Name: Anonymous 2008-12-23 11:49

Nevermind i decided to use another version:
it doesn't use any regular shifts,but it get right results every time.

function cshr(value,shift){ 
var txt=value.toString(2);
var txl=32-txt.length;
switch(txl){
case 1:;var adds='0'+txt;break;
case 2:;var adds='00'+txt;break;
case 3:;var adds='000'+txt;break;
case 4:;var adds='0000'+txt;break;
case 5:;var adds='00000'+txt;break;
case 6:;var adds='000000'+txt;break;
case 7:;var adds='0000000'+txt;break;
case 8:;var adds='00000000'+txt;break;
case 9:;var adds='000000000'+txt;break;
case 10:;var adds='0000000000'+txt;break;
case 11:;var adds='00000000000'+txt;break;
case 12:;var adds='000000000000'+txt;break;
case 13:;var adds='0000000000000'+txt;break;
case 14:;var adds='00000000000000'+txt;break;
case 15:;var adds='000000000000000'+txt;break;
case 16:;var adds='0000000000000000'+txt;break;
case 17:;var adds='00000000000000000'+txt;break;
case 18:;var adds='000000000000000000'+txt;break;
case 19:;var adds='0000000000000000000'+txt;break;
case 20:;var adds='00000000000000000000'+txt;break;
case 21:;var adds='000000000000000000000'+txt;break;
case 22:;var adds='0000000000000000000000'+txt;break;
case 23:;var adds='00000000000000000000000'+txt;break;
case 24:;var adds='000000000000000000000000'+txt;break;
case 25:;var adds='0000000000000000000000000'+txt;break;
case 26:;var adds='00000000000000000000000000'+txt;break;
case 27:;var adds='000000000000000000000000000'+txt;break;
case 28:;var adds='0000000000000000000000000000'+txt;break;
case 29:;var adds='00000000000000000000000000000'+txt;break;
case 30:;var adds='000000000000000000000000000000'+txt;break;
case 31:;var adds='0000000000000000000000000000000'+txt;break;
case 32:;var adds='00000000000000000000000000000000'+txt;break;
default:var adds=txt;break;
}

switch(parseInt(shift)){
case 0:;var shf=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];break;
case 1:;var shf=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0];break;
case 2:;var shf=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1];break;
case 3:;var shf=[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2];break;
case 4:;var shf=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3];break;
case 5:;var shf=[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4];break;
case 6:;var shf=[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5];break;
case 7:;var shf=[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6];break;
case 8:;var shf=[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7];break;
case 9:;var shf=[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8];break;
case 10:;var shf=[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9];break;
case 11:;var shf=[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10];break;
case 12:;var shf=[12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11];break;
case 13:;var shf=[13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12];break;
case 14:;var shf=[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13];break;
case 15:;var shf=[15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];break;
case 16:;var shf=[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];break;
case 17:;var shf=[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];break;
case 18:;var shf=[18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];break;
case 19:;var shf=[19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];break;
case 20:;var shf=[20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19];break;
case 21:;var shf=[21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];break;
case 22:;var shf=[22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21];break;
case 23:;var shf=[23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22];break;
case 24:;var shf=[24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];break;
case 25:;var shf=[25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24];break;
case 26:;var shf=[26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25];break;
case 27:;var shf=[27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26];break;
case 28:;var shf=[28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27];break;
case 29:;var shf=[29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28];break;
case 30:;var shf=[30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29];break;
case 31:;var shf=[31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];break;
default:var shf=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];break;
};

var resar=[];
for(var i=0;i<32;i++){
resar[i]=txt[shf[i]]}
return parseInt(resar.join(""),2)
 }

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List