, поэтому я перемещаю char в длинный, затем очищающий и делающий это снова. Сдвиг 15 заставляет мою машину идти дурацкой, см. Комментарий в коде. Как вы думаете, это вызывает это.C бит сдвиг нечетных результатов за последние 15 бит сдвигает влево
Эта машина символ 0x00 и длиной 0x0000 0000
unsigned char temp;
unsigned long open_code;
temp = 0x01;
open_code = open_code | (temp <<1);// open_code = 0x0000 0002
open_code = 0;
//......
// 2 - 7
//....
temp = 0x01;
open_code = open_code | (temp <<8); // open_code = 0x0000 0100
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<9); // open_code = 0x0000 0200
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<10); // open_code = 0x0000 0400
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<11); // open_code = 0x0000 0800
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<12); // open_code = 0x0000 1000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<13); // open_code = 0x0000 2000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<14); // open_code = 0x0000 4000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<15); // open_code = 0xFFFF 8000 !!!!!
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<16); // open_code = 0x0000 0000 !!!!!
вы пробовали копировать полукокс в длинном первый, затем сдвигая его? –
Выглядит отлично «нормально» для меня. Просто взаимодействие различных правил литья C (которые часто непостижимы). –
На какой платформе вы работаете? –