java'&'运算符的使用情况

来源:爱站网时间:2022-09-12编辑:网友分享
今天小编带大家来了解下java'&'运算符的使用情况,如果你对这方面内容比较感兴趣的话,一定要看看这篇文章,接下来的时间就让爱站技术频道小编带大家来一探究竟吧!

问题描述


我不确定如何用这个问题来表述主题,因为我是位操作的新手,真的不了解它的工作原理。

我正在对游戏应用程序进行逆向工程,只是为了了解它的工作原理,并想弄清楚方法中'&'运算符的使用情况。

部分代码:

int n = (random numbers will be provided below)
int n2 = n & 1920 // interested in this line of code
switch (n2){
//ignore n2 value assignment inside of cases
    case 256: {
        n2 = 384;
        break;
    case 384: {
        n2 = 512;
        break;
    case 512: {
        n2 = 0
        break;

测试值:

Input Values | Output Values | Substituting Values
n = 387      | n2 = 384      | ( 387 & 1920 ) = 384
n = 513      | n2 = 512      | ( 513 & 1920 ) = 512
n = 12546    | n2 = 256      | ( 12546 & 1920 ) = 256
n = 18690    | n2 = 256      | ( 18690 & 1920 ) = 256

基于此用例,我有几个问题:

在此示例中,&运算符在做什么?

  • 在我看来,大多数值都被四舍五入到最接近的位间隔,但大于10000的数字除外

数字1920有什么重要意义?

他们是如何得出这个数字以达到特定的比特间隔的? (如果可能的话)

解决方法:


要了解位操作,您要做的第一件事是将所有以10为底的十进制数转换为显示位的数字格式,即以2为底的二进制数或以16为底的十六进制数(如果您已经学会了读那些)。

位从右开始编号,从0开始。

Decimal     Hex            Binary
    256 = 0x100 =   0b1_0000_0000
    384 = 0x180 =   0b1_1000_0000
    512 = 0x200 =  0b10_0000_0000
   1920 = 0x780 = 0b111_1000_0000
                    | | |  |    |
                   10 8 7  4    0   Bit Number

如您所见,n & 1920将清除除7-10位以外的所有字符。

只要n没有任何大于10的设置位,即大于0x7FF = 2047,则效果如您所述,这些值将四舍五入(截断)到最近的位间隔,即128。

java'&'运算符的使用情况内容暂时分享到这里了,如果你有不懂的地方,可以直接来网站联系咨询小编,小编一定帮大家解决问题。获取更多技术资讯,尽在爱站技术频道网站。

上一篇:Java未定义构造函数JSONTokener

下一篇:Java中使用WEKA库中的神经网络

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载