小编scy*_*y17的帖子

将 int 中的最后 10 位左移

我需要实现一个向左循环 int 的最后 10 位的函数。

所以如果 int 有价值

0b 1111 0000 0000 0000 0000 1100 1100 0000
Run Code Online (Sandbox Code Playgroud)

左旋转 2 会给我们

0b 1111 0000 0000 0000 0000 1111 0000 0000
Run Code Online (Sandbox Code Playgroud)

再向左旋转 1 会得到

0b 1111 0000 0000 0000 0000 1110 0000 0001
Run Code Online (Sandbox Code Playgroud)
  • ptr- 指向我们想要旋转的给定 int 的指针
  • n- 我们想要旋转多少次
void leftRotateLast10Digits(int * ptr, int n) {

}
Run Code Online (Sandbox Code Playgroud)

我知道如果我们想旋转整个 int 该怎么做,但我不知道如何只旋转最后 10 位数字。我认为左旋转一个 int,它看起来像下面这样。但我仍然不明白如何只旋转最后 10 位数字。

void leftRotate(int * ptr, int n) {
    int DROPPED_MSB;
    int INT_BITS = sizeof(int) * 8 …
Run Code Online (Sandbox Code Playgroud)

c bitwise-operators byte-shifting

1
推荐指数
1
解决办法
340
查看次数

找到一个值 y 这样 (x < y) == (-x > -y) 将是假的,当 x 是有符号整数并且 x=1 时?

问题问,

让 int x = 1,找到一个 int y 的值,其中以下语句将返回 false: (x < y) == (-x > -y)

我知道答案应该是 4 个字节长(8 个十六进制数字),但我不知道如何解决这个问题。

c

0
推荐指数
1
解决办法
266
查看次数

标签 统计

c ×2

bitwise-operators ×1

byte-shifting ×1