C ++:对无符号短进行位移

Posted

技术标签:

【中文标题】C ++:对无符号短进行位移【英文标题】:C++: Bitshifting an unsigned short 【发布时间】:2013-04-25 14:20:09 【问题描述】:

我正在尝试将 2 个 unsigned char 保存到一个 unsigned short 中。 所以我要做的是保存第一个字符,然后将其移位或使用第二个字符。

代码:

unsigned char a = 8;
unsigned char b = 2;
unsigned short c = a;
c << 8;
c |= b;

但我首先遇到了位移问题。 运行此代码:

unsigned char a = 8;
unsigned short c = a;
c << 8;
cout << c;

我希望得到 2048。 我什至在这里检查过:http://www.miniwebtool.com/bitwise-calculator/bit-shift/?data_type=10&number=8&place=8&operator=Shift+Left。 但是我得到了 8。我做错了什么?

【问题讨论】:

【参考方案1】:
c <<= 8;

不是

c << 8;

第二种情况不会修改 c 的值。我本来希望你的编译器会警告你。

【讨论】:

没问题,我也犯了同样的错误。

以上是关于C ++:对无符号短进行位移的主要内容,如果未能解决你的问题,请参考以下文章

使用 192/256 位整数对无符号 64 位整数向量的点积求和的最快方法?

用无符号“负”数递减指针

Linux内核并发与竞争-原子操作

Linux内核并发与竞争-原子操作

-1对256取模

如何在 Tensorflow 中对无维度的张量进行切片