Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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
从C++;到爪哇 我把这个C++代码移植到java上。我用java比C++更出色。我在很大程度上理解位移位,但我并不真正理解无符号长值在这个上下文中的作用_Java_C++ - Fatal编程技术网

从C++;到爪哇 我把这个C++代码移植到java上。我用java比C++更出色。我在很大程度上理解位移位,但我并不真正理解无符号长值在这个上下文中的作用

从C++;到爪哇 我把这个C++代码移植到java上。我用java比C++更出色。我在很大程度上理解位移位,但我并不真正理解无符号长值在这个上下文中的作用,java,c++,Java,C++,这在Java中是什么样子的 #include <iostream> using namespace std; int main() { short netSpeed = 3; cout << "netSpeed before: " << netSpeed << endl; netSpeed = 1UL << netSpeed; cout << "netSpeed after: " <

这在Java中是什么样子的

#include <iostream>
using namespace std;

int main() {
   short netSpeed = 3;    
   cout << "netSpeed before: " << netSpeed << endl;

   netSpeed = 1UL << netSpeed;
   cout << "netSpeed after: " << netSpeed << endl; 

   return 0;
}
#包括
使用名称空间std;
int main(){
短网速=3;

CUT< P> C++开发人员不使用平台的有符号整数类型的表示机会,它可以是1或2的补码,它们也会因为积分值1溢出而保护自己不被定义,这可能会像16位<代码> int >小。

使用1UL让他们确信移位的结果将是0b1000。
UL
迫使编译器使用
无符号长
类型


实际上,在这种情况下,它是多余的,并且假定java总是使用2的补码来完成整数类型(并且它们都是签名的,除了<代码> char < /Cuff>类型】,编写“代码> 1”p>非常安全,这是您的代码从C++到java的精确转换:

class Speed {
    public static void main(String args[]) {
       short netSpeed = 3;
       System.out.println("netSpeed before: "+netSpeed);

       netSpeed = (short) (1 << netSpeed);
       System.out.println("netSpeed after: "+netSpeed);
    }
}
类速度{
公共静态void main(字符串参数[]){
短网速=3;
System.out.println(“netSpeed before:+netSpeed”);

netSpeed=(短)(1)你试着运行它并检查它是否做了……你可能用java做的副本比C++好得多,但是你不知道如何打印到控制台?你看到矛盾了吗?当然我跑了。你读过我的问题了吗?我在想1UL。你在做点移动,所以这没关系,但是如果你开始玩。字节级的大怪异可能是Java总是暴露大的字节序,C++是平台依赖的字节序。如果数字读回了疯狂的值,检查Endiad。我不确定我是否买了它。结果是(1)我以前看到的东西比不自信的C++开发者要少。我说的是java(可能不够清楚)。这是多余的。