Преобразование короткого в двоичный код... Первые 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 - биты значений данных.