编程语言
首页 > 编程语言> > 在Java中获取int的特定位子集

在Java中获取int的特定位子集

作者:互联网

我将如何获取Java中int的特定子集(例如5-10位)?

寻找一种可以传递特定位位置的方法.我不确定如何创建一个根据输入改变的遮罩,或者即使那是应该怎么做的遮罩.

我知道这就是让前台说出一个int的10位的方式:(我认为)
int x = num>> 22;

解决方法:

假设您有一个数字n,并希望位从i到j(i = 5,j = 10).

请注意,i = 0将给您最后一点

 int value = n & (((1 << (j-i)) - 1) << i );

会给你结果.

左侧很明显:您有一个值,并将在其上放置一个位掩码.

掩码的值是((1<(j-i))-1)<<一世.它说:
>取1位(值:0000000000000001)
>将其左移j-i次(值:2 ^(10-5)= 2 ^ 5 = 32 = 0000000000100000)
>减去1(值:31 = 0000000000011111)-您看到最低位反转了吗?
>向左移动i次(值:31 * 32 = 992 = 0000001111100000)

因此,您已经获得了5-10位的位掩码(更准确地说,是从5到9,因为不包括第10位).

标签:bit-manipulation,java
来源: https://codeday.me/bug/20191031/1972375.html