Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Побитовый левый сдвиг (https://javascript.ru/forum/misc/36425-pobitovyjj-levyjj-sdvig.html)

otRock 14.03.2013 19:33

Побитовый левый сдвиг
 
Здравствуйте все.
Столкнулся с проблемой "типов данных" в JS

Сразу приведу примеры чтоб было понятно, что именно не получается

Код на С, дающий необходимый(верный) результат:
unsigned char byte = 70;
byte <<= 4; // теперь byte == 96


аналогичный код на JS:
var byte = 70;
byte <<= 4; // теперь byte == 1120


Вся проблема в том, что byte в С это 8 бит, а в JS byte занимает 32 бита. Как получить необходимый результат(96) средствами яваскрипта?
PS Использую NodeJS

рони 14.03.2013 20:55

otRock,
а можно ради интереса ещё несколько пар типа 70 - 96?

danik.js 14.03.2013 21:05

рони,
01000110 (70)
        << 4
01100000 (96)

рони 14.03.2013 21:08

danik.js,
мне надо 50 --- ??
8 ---??? и тд сколько это будет на C

рони 14.03.2013 21:15

:write:
вариант )))
function c8(d)
{
   return parseInt(/\d{8}$/.exec((""+d.toString(2)))[0], 2)
}
alert(c8(1120));

devote 14.03.2013 21:20

аналогичный код на JS:
var byte = 70;
alert(byte << 4 & 255); // теперь byte == 96

devote 14.03.2013 21:20

рони,
:) легких путей не ищем

otRock 14.03.2013 22:05

devote,
Спасибо! То, что надо!)


Часовой пояс GMT +3, время: 07:40.