Преобразование короткого в двоичный код... Первые 8 цифр и последние 8 цифр меняются местами по некоторым причинам

Я пишу программу, которая преобразует символы, шорты и числа с плавающей запятой в двоичный файл. Я получил это работает на символы. На шортах, однако, он печатает первые 8 цифр после последних 8 цифр. 115 должно быть 0000 0000, 0111 0011, но моя программа дает мне 0111 0011 0000 0000. Отлично работает на символах (переключение i<16 на i<8).

Я провел некоторое время в поисках, но ничего не могу найти. Есть намеки?

#include<iostream>
#include<cstdlib>
using namespace std;



int main()
{

char testChar = 'C';
short testShort = 115;
float testFloat = 1.99;

unsigned int mask =128;

for(int i=0; i<16;i++)
{
    //cout<<mask;
    if ((testShort & mask)==0)
        cout<<'0';
    else
        cout<<'1';
    mask >>=1;
} 

}

1 ответ

Маска должна быть 32768 для краткости. Это было 128 за символ. 2^(n-1), где n - биты значений данных.

Другие вопросы по тегам