将短转换为二进制...前 8 位和后 8 位由于某种原因被交换

Posted

技术标签:

【中文标题】将短转换为二进制...前 8 位和后 8 位由于某种原因被交换【英文标题】:Converting a short to binary...First 8 digits and last 8 digits are swapped for some reason 【发布时间】:2015-01-28 04:58:03 【问题描述】:

我正在编写一个将字符、短裤和浮点数转换为二进制的程序。我让它在字符上工作。然而,在短裤上,它在最后 8 位数字之后打印前 8 位数字。 115 应该是 0000 0000 0111 0011,但我的程序给了我 0111 0011 0000 0000。在字符上工作正常(将 i

我花了一段时间搜索,但找不到任何东西。有什么提示吗?

#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;
 


【问题讨论】:

mask设置为128是什么意思? 想通了。那是给char的。应该是 2^15 的简称 投票结束,因为这个问题是基于一个错字。 【参考方案1】:

掩码应简称为 32768。 char 是 128。 2^(n-1),n为数据值位。

【讨论】:

考虑将mask 设置为1 &lt;&lt; (8*sizeof(variable) - 1)

以上是关于将短转换为二进制...前 8 位和后 8 位由于某种原因被交换的主要内容,如果未能解决你的问题,请参考以下文章

Uva 11029 Leading and Trailing (求n^k前3位和后3位)

在 Python 3.x 中转换 8 位和 7 位值

单片机中高8位是啥,低8位又是啥,还有高四位低四位的,求解

如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?

位和位模式

将 PCM 16 位音频转换为 PCM 8 位