bit-shift

    1热度

    3回答

    这是我的问题。我有三个布尔值,其中 是我可以选择的选项。我可以有多个 组合,带三个选项: 即没有选项(全是假的) 选项1只 方案1和方案2 方案1和方案2和选项3 选项2只 选项2和选项3 选项3只 等 我需要检查所有的组合,但我不 想写一吨,如果else if语句的。 有没有办法可以得到结果应该是 是什么? 像 result = option1 & option2 & option3 ,然后

    4热度

    1回答

    C++ 03标准告诉我们将按位移位运算符应用于带符号类型的结果可以是UB和Impl。定义为负值值。我的问题如下:为什么对于运营商<<它有未定义的行为,而对于运营商>>它只是实现定义?为什么<<的结果为什么不能被实现定义呢? 在此先感谢。

    0热度

    1回答

    使用右移操作,我想进行不是2的幂的60的除数。我该怎么做呢? 如果我想NUM/64,我可以做num >> 6因为64 = 2^6 我怎么办呢60?

    1热度

    4回答

    我想从UTF-8格式中提取字符值。假设我有两个字符,并予提取第一个字符5个比特=> 10111和6位与另一个字符=> 010000 所以 ch1 = 10111; ch2 = 010000; 我将如何将它们合并以形成10111010000和输出其十六进制为0x5d0?我是否需要移位或是否有更简单的方法来执行此操作,因为检查文档write似乎能够按顺序读取字符,是否有类似的功能?此外,它似乎我

    14热度

    1回答

    <<=和|=在C中是什么意思?我知道<<是bitshift等,但我不知道这些是什么组合。

    2热度

    2回答

    是否可以有效地使用按位运算来比较两个值,其中第二个值是第一个值的超集? 如果我将属性1,2和3设置为ON,则需要将其与属性1和2可以打开的值或OF和3必须打开的值相匹配。 enum user_attribs { attrib1 = 0, attrib2 = 1, attrib3 = 2 } enum spt_attribs { attrib1 = 0, attrib2 =

    0热度

    3回答

    我不明白为什么这两个函数的输出越来越清零时被清零时,我将他们输出: class uint128_t{ private: uint64_t UPPER, LOWER; public: // constructors uint128_t(){ UPPER = 0; LOWER = 0; } template <type

    3热度

    4回答

    鉴于本人的2402914一个uint值,我想抓住最左边的17位,其中是在我的逻辑故障通过执行这样的代码: int testop = 0; byte[] myArray = BitConverter.GetBytes(2402914); fixed (byte* p = &myArray[0]) { testop = *p >> 15; } 我预期的输出是 50516.

    0热度

    1回答

    这是我的问题。我有以下的结构定义 struct idt_reg{ unsigned short limit; unsigned int base; }__attribute__((packed)); 在我的代码我做了以下分配 unsigned short num_ids = idtr.limit >> 3; 现在在执行时,当存储在idtr.limit的值等于2047(

    2热度

    2回答

    计算机如何知道(int x,y)x << y意味着移位y位?我不是说转移的一部分。我的意思是y部分。计算机是否将x移动x,然后从y中减去y直到y == 0?如果不是计算机如何计算y的价值? 如果说y = 10,那么二进制表示是0b1010。 电脑不能简单地采取1010和使用它的每一位,可以吗? 我试图以此为位尺寸大于8大。由于值不只是作为标准整数数组存储容器不表示一个值,因此过载运营商<<和>>是