标签: bit-manipulation

Java中的位移

可能是我太累了.
为什么以下不显示相同的值?

int x = 42405;
System.out.println(x << 8);  
System.out.println((x &0x00ff) << 8);  
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,较低的位应该是清楚的

java bit-manipulation bit

-2
推荐指数
1
解决办法
3136
查看次数

奇怪的是C左移位

我想在c中做左移位.

int a = 32;    
printf("%d\n", ~0 << a);    
printf("%d\n", ~0 << 32);    
Run Code Online (Sandbox Code Playgroud)

所以我运行2个printf()以上,结果是不同的.我使用dev-C++.我不明白为什么不同.请帮我.

c bit-manipulation

-2
推荐指数
1
解决办法
179
查看次数

如何将所有位向左旋转,在c中向右旋转最后一位

我必须将所有位从x 1位置向左移位,将左边的第一位移位到位位置0(最右边).我想知道我做错了什么,你可以帮助我.

int rotateleft (int x);

int main ()
{      
    int getal,result;
    printf("Enter a number :\n");
    scanf("%i",&getal);
    result=rotateleft(getal);
    printf("result after rotation: %08x", result );
    return 0;
}

int rotateleft (int x)
{
    int rbit;
    rbit = x <<1;
return rbit;
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bit

-2
推荐指数
1
解决办法
227
查看次数

为什么左移浮动值有效?

据我所知, 左移Float类型 不能在浮点值上使用左移运算符.但是当我尝试它时,它给出了与乘以2 n相同的答案.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    // your code goes here
    float a  = 1.1234;
    int b = (int)(a*(1<<10));
    int c = (int)(a*pow(2,10));
    cout << "\n a = " << a << " b = " << b << " c = " << c;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它输出a = 1.1234 b = 1150 c = 1150

在哪种情况下两个输出(bc)会有所不同?

c++ floating-point bit-manipulation bit-shift

-2
推荐指数
1
解决办法
329
查看次数

这段代码做了什么?

我遇到了这段代码,但我无法完全理解它:

(((x)[y] << 8) | (x)[(y)+1])
Run Code Online (Sandbox Code Playgroud)

其中x是指向const unsigned char的指针,y是一个整数.

c bit-manipulation

-2
推荐指数
1
解决办法
117
查看次数

如何有效地将java中的double的最后32位清零?

如何尽可能有效地将java中的double的最后32位清零?

java bit-manipulation bit

-2
推荐指数
2
解决办法
239
查看次数

如何实现三元运算符a?b:c,不使用if else和分支

我想在不使用if else语句的情况下实现三元运算符。需要使用按位运算符而不使用三元运算符和if else语句来实现。

a= true --> res = b
a= false --> res = c
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation ternary-operator

-2
推荐指数
1
解决办法
944
查看次数

在java中求解方程2 ^ x

我有一个数字是2 ^ x的总和

例如104 = 2 ^ 3 + 2 ^ 5 + 2 ^ 6

我想要一个简单的功能

如果数字可以是2 ^ x的总和,则返回true

如果x可能是第二个数字.

示例myfunc(3,104)= true

(5,104)=真

但是myfunc(3,2)= false

因为我们找不到数字2 ^ 3 + nb = 2

谢谢你,对不起我的英语

java bit-manipulation

-2
推荐指数
1
解决办法
78
查看次数

比特扭曲黑客

任何人都可以帮助解释val以下示例中的含义吗?我完全不知道它的价值是什么val.

#define SPLAT(p)       (*(p) * (~0UL / 255))

uint8_t *page;
unsigned long val = SPLAT(page);
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

-2
推荐指数
1
解决办法
200
查看次数

C中float/double的按位绝对值(转换期间丢失的小数)

我想要比较不同的方法来获得float/double的绝对值,以找出哪一个是最快的,因为我必须将它应用于大型数组.通过使用强制转换和位掩码,在此过程中会丢失小数.(我必须只使用C)

这是我的代码:

uint64_t mask = 0x7fffffffffffffff;
double d1 = -012301923.15126;
double d2 = (double)(((uint64_t)d1) & mask);
Run Code Online (Sandbox Code Playgroud)

输出是:

d1 = -012301923.15126;
d2 = 012301923.00000;
Run Code Online (Sandbox Code Playgroud)

因此在转换过程中会丢失小数,有没有快速的方法让它们恢复?

提前致谢.

编辑:我知道fabs(),我只是想尝试比较不同的"手工"解决方案.

c bit-manipulation

-2
推荐指数
2
解决办法
906
查看次数