将短转换为二进制...前 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 << (8*sizeof(variable) - 1)
以上是关于将短转换为二进制...前 8 位和后 8 位由于某种原因被交换的主要内容,如果未能解决你的问题,请参考以下文章
Uva 11029 Leading and Trailing (求n^k前3位和后3位)