24得票5回答
从RGB整数转换为十六进制

我手头有一个颜色值为R:255 G:181 B:178,并且我正在使用C#(更具体地说,是为WP8编写) 我想将其转换为十六进制数以用作颜色值(来设置WriteableBitmap的像素颜色)。 我正在执行以下步骤:int hex = (255 << 24) | ((byte)R ...

24得票3回答
在C语言中,移位运算符如何计算?

最近我注意到了一个(奇怪的)行为,当我使用位移操作符shift >> <<进行运算时。 为了解释这个问题,让我编写一个小的可运行代码来演示两个操作应该是相同的(在我的理解中),但我惊讶地发现它们产生了不同的结果!#include <stdio.h> in...

24得票4回答
在C#中,使用BitArray获取位值是否比使用位运算符“与”和位移更快?

1). var bitValue = (byteValue & (1 << bitNumber)) != 0; 1). 使用位与和位移操作可以将一个字节的特定位转换为bool值。 2). 使用System.Collections.BitArray类和其包含的Get(int...

24得票3回答
Google协议缓冲区:ZigZag编码

从 编码 - Protocol Buffers - Google Code 的 "有符号类型" 章节中得知: ZigZag 编码将有符号整数映射到无符号整数,以使具有小绝对值的数字(例如,-1)也具有较小的变量长度编码。它通过在正数和负数之间“来回”地进行"zig-zag"操作来实现这一...

23得票6回答
为什么在Java中需要使用移位运算符?

使用移位运算符的目的是什么,而不是使用除法和乘法? 使用移位运算符还有其他好处吗? 在什么情况下应该尝试使用移位运算符?

23得票2回答
位移运算符。有符号和无符号。

我正在使用网络上的临时笔记来准备SCJP考试。 根据我的笔记,>>运算符应该是有符号右移,符号位从左侧带入。而左移运算符<<应该保留符号位。 然而,在尝试中,我能够使用<<运算符改变符号(例如,Integer.MAX_VALUE << 1计算...

22得票2回答
位移运算符的结果类型是什么?

考虑以下代码清单: #include <type_traits> #include <cstdint> static_assert(std::is_same_v<decltype(31), int32_t>); static_assert(std::is...

22得票7回答
右移运算符的奇怪行为(1 >> 32)

最近我遇到了使用右移位运算符时的一种奇怪行为。 下面是示例程序:#include <cstdio> #include <cstdlib> #include <iostream> #include <stdint.h> int foo(int ...

22得票6回答
零位移操作是否能正确执行?

假设我有一个如下的函数:inline int shift( int what, int bitCount ) { return what >> bitCount; } 它将在每次调用时从不同的站点被调用,只要bitCount为非负数并且位于int中的位数内。我特别关注bit...

22得票7回答
在Java中进行长整型的位移操作

我相信对于第一个看到这个问题的人来说,这是一个容易解决的问题! 在Java中,为什么像下面这样的代码 long one = 1 << 0; long thirty = 1 << 30; long thirtyOne = 1 << 31; ...