Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 左移零的目的是什么?_Java - Fatal编程技术网

Java 左移零的目的是什么?

Java 左移零的目的是什么?,java,Java,阅读ASM 4.1源代码后,我发现了以下实例: int ASM4 = 4 << 16 | 0 << 8 | 0; int ASM5 = 5 << 16 | 0 << 8 | 0; int ASM4 = 4 << 16 | 0 << 8 | 0; // this looks like 4.0.0 int ASM5 = 5 << 16 | 0 << 8 | 0; // this looks list 5

阅读ASM 4.1源代码后,我发现了以下实例:

int ASM4 = 4 << 16 | 0 << 8 | 0;
int ASM5 = 5 << 16 | 0 << 8 | 0;
int ASM4 = 4 << 16 | 0 << 8 | 0; // this looks like 4.0.0
int ASM5 = 5 << 16 | 0 << 8 | 0; // this looks list 5.0.0

int ASM4=4它确实没有任何用途,但是它是整齐的、视觉上一致的,以便ASM开发人员了解操作码版本(如果我没有弄错的话,这就是您在这里看到的
操作码
界面)

与您在上下文中使用
1的方式相同:

// ASM API versions

int ASM4 = 4 << 16 | 0 << 8 | 0;
int ASM5 = 5 << 16 | 0 << 8 | 0;
//ASM API版本

int ASM4=4实际上,它们是等价的,但一种可能的解释是,它们希望将版本号(包括主版本号和次版本号)映射到代码中的唯一ID。因此,在以下方面:

int ASM4 = 4 << 16 | 0 << 8 | 0;
int ASM5 = 5 << 16 | 0 << 8 | 0;
int ASM4 = 4 << 16 | 0 << 8 | 0; // this looks like 4.0.0
int ASM5 = 5 << 16 | 0 << 8 | 0; // this looks list 5.0.0

int ASM4=4移零将导致0…测试等效性很容易:可能是某个锅炉板碰巧在这里为零?很容易转换成其他的东西。转换常数有什么意义?不妨写
intasm4=262144(此问题的答案与该问题的答案相同)@immibis如果您使用shift,则更容易查看数字的来源。我不认为262144是4^16(甚至是2^18)。我想知道他们是否听说过评论?不管怎样,这似乎是最有可能的解释。@christopher,即使他们这样做了,正如俗话所说,代码会说话;)@christopher这在嵌入式开发中是相当标准的。如果您出于任何原因(例如,驱动外设)设置位,必须明确您是在显式写入零,而不是忘记特定位是相关的。+1:编写程序不仅是为了让计算机编译,也是为了让下一个开发人员阅读。事实上,我发现越来越多的程序是为下一个开发人员编写的,在这里和那里有一些语法使其编译。大型程序很难阅读!int ASM4=0x400;本可以更简洁地完成相同的目的。@pericynthion:可能是相同的目的,但为了获得相同的效果,您必须编写
int ASM4=0x40000
,这使得它与版本4.0.0的对应性不那么明显。(也许他们想允许4.0.16版…@NateEldredge)。我喜欢这5个人加上1个我的评论,他们显然比我更不记得一小口中有多少比特了@NateEldredge:这就是为什么我们对它在SO上的工作方式越来越感兴趣的原因。你说的和被接受的答案几乎一样,甚至更早一点就发布了。我不得不把这个答案读到最后一句才明白重点。然后我注意到灰色评论线上的灰色暗示了答案。