当前位置: 首页 > 面试题库 >

>>在Java中做什么?

谢高峯
2023-03-14
问题内容

好的,我尝试查找>>或shift的含义,但是此站点对此进行了解释:http
:
//www.janeg.ca/scjp/oper/shift.html

如果和孩子说话,会是什么解释?


问题答案:

计算机是二进制设备。因此,数字由1和0的序列表示。

移位只是简单地左右移动那些1和0的序列。

因此,>>操作员要做的就是将这些位向右移一位。

考虑数字101:

// Assuming signed 8-bit integers
01100101 // How 101 is represented in binary
00110010 // After right shifting one bit, this represents 50

在这种情况下,最低有效位被截断了。显然,细节决定了魔鬼,但这就是全部。

<<操作者不相反的操作:

// Assuming signed 8-bit integers
01100101 // How 101 is represented in binary
11001010 // After left shifting one bit, this represents -54

// Assuming unsigned 8-bit integers
01100101 // How 101 is represented in binary
11001010 // After left shifting one bit, this represents 202

在这种情况下,由于我只使用8位,所以最高位被截断了。但是,如果该数字有更多位,请执行以下操作:

// Assuming signed 16-bit integers
00000000 01100101 // How 101 is represented in binary
00000000 11001010 // After left shifting one bit, this represents 202
00000001 10010100 // After left shifting one bit again, this represents 404

因此,根据要处理的位数和与之相关的数据类型,您可能会获得不同的数字。

附录: 如果您想知道二进制的工作方式,请考虑十进制系统的工作方式。考虑数字5287。可以这样写:

5287

但是您也可以这样写出来:

5287 = (5 * 1000) + (2 * 100) + (8 * 10) + (7 * 1)

然后可以这样写出来:

5287 = (5 * 10^3) + (2 * 10^2) + (8 * 10^1) + (7 * 10^0)

上面的等式解释了为什么十进制数系统有时被称为以10为底的系统。十进制数字系统使用10位数字(0-9)。注意指数如何与数字位置相对应。

二进制数字系统或以2为基的系统是完全相同的东西,但是数字2是指数的基础,并且仅使用两个数字:0和1。

5287 = 00010100 10100111 (base 2)
     = (0 * 2^15) + (0 * 2^14) + (0 * 2^13) + (1 * 2^12)
     + (0 * 2^11) + (1 * 2^10) + (0 * 2^9)  + (0 * 2^8)
     + (1 * 2^7)  + (0 * 2^6)  + (1 * 2^5)  + (0 * 2^4)
     + (0 * 2^3)  + (1 * 2^2)  + (1 * 2^1)  + (1 * 2^0)


 类似资料:
  • 问题内容: 在Java中,我刚刚发现以下代码是合法的: 仅供参考,接收方只是具有以下签名的帮助程序类: 我从未见过这种记法。这是如何运作的?有什么方法可以更常规地进行编码吗? 问题答案: 这是从包含的类主体外部实例化非静态内部类的方法,如Oracle docs中所述 。 每个内部类实例都与其包含类的实例相关联。当你从一个内部类 中 包含它的类,它使用的默认容器的实例: 但是,如果要在Foo外部创建

  • 问题内容: 用 Java 做什么?我阅读了文档,但仍然无法确定。 医生说: 返回可以从此输入流读取(或跳过)的字节数,而不会被该输入流的方法的下一个调用者阻塞。下一个调用者可能是同一线程或另一个线程。 类InputStream的可用方法始终返回0。 封锁 是什么意思?这仅表示同步通话吗? 最重要的是,该方法的目的是什么? 问题答案: 这里的阻塞与线程或同步无关。相反,它涉及到阻塞的IO(见本获取更

  • 问题内容: 返回类型-方法返回的值的数据类型;如果该方法未返回值,则返回void。 http://download.oracle.com/javase/tutorial/java/javaOO/methods.html 那好吧..这是我的问题: http://download.oracle.com/javase/tutorial/java/javaOO/enum.html 上面的代码没有无效就无法

  • 问题内容: 在阅读Android通知指南时,我偶然发现了这一点: 增加振动 您可以使用默认振动模式或应用程序定义的振动模式来警告用户。 要使用默认模式,请将“ DEFAULT_VIBRATE”添加到默认字段: 这样做很清楚:它将标志添加到通知对象的默认标志。但是,运算符在Java中做什么?它看起来像一个“ OR”,但是它如何工作? 您可以举一个使用数字的例子吗? 谢谢 问题答案: 是按位或分配运算

  • 问题内容: 最近,我发现自己需要确保清单不正确。Hibernate非常好,可以完美地返回它。愚蠢的冬眠,没有读懂我的想法。 我看了看我的Java API,它告诉我它的shuffle方法是这样做的: 使用默认的随机性源随机排列指定的列表。 作为我的好奇乔治,我想知道这到底意味着什么。我可以选一门数学课程来学习吗?我可以看到代码吗?Java,您对我的ArrayList做什么?!?!? 更具体地说,这里

  • 我想要做的是一步一步地监视我的脚本的执行(VM执行的每一个计算),并存储关于这些计算的信息(类“bar”中的变量“foo”变成了行“soandso”上的4)作为一种运行缓存,每当发生错误时就转储到系统控制台。 这可能吗?