在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解? 如何在java中实现把一个数变成2的N次幂

\u8bf7\u95ee\u5355\u7247\u673a\u91cc\uff0c\u4e00\u4e2a\u6570\u4e58\u4ee52\u7684n\u6b21\u65b9\u76f8\u5f53\u4e8e\u79fb\u4f4d\u64cd\u4f5c\uff0c\u90a3\u4e48\u4e00\u4e2a\u6570\u51cf\u53bb\u4e00\u4e2a2\u7684n\u6b21\u65b9\u6709\u4ec0\u4e48\u6548\u679c\uff0c\u60f3\u4e86\u597d\u4e45

2\u7684n\u6b21\u5e42\u5c31\u662f1\u5de6\u79fbn\u6b21\u7684\u7ed3\u679c\u3002\u4e00\u4e2a\u6570\u51cf2\u7684n\u6b21\u5e42\uff0c\u8bf4\u6548\u679c\u5012\u662f\u6ca1\u6709\u4ec0\u4e48\u7279\u522b\u7684\u3002\u5c31\u662f\u51cf\u800c\u5df2\u3002

public class test1 {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.println("\u8f93\u5165\uff1a");
double d = Math.pow(sc.nextDouble(), 4);
System.out.println((int)d);

}
}


\u8981\u5b9e\u73b0\u51e0\u6b21\u65b9\uff0c\u5c31\u662fMath.pow(sc.nextDouble(), 4)\u8fd9\u91cc\u9762\u76844\u6539\u6210\u51e0\u6b21\u65b9\u5c31\u884c\u4e86\uff0c
\u4e3b\u8981\u7528Math\u8fd9\u4e2a\u7c7b\u7684pow(double a, double b) \u8fd9\u4e2a\u65b9\u6cd5
\u65b9\u6cd5\u63cf\u8ff0\uff1a\u8fd4\u56de\u7b2c\u4e00\u4e2a\u53c2\u6570\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6b21\u5e42\u7684\u503c\u3002
\u4e5f\u5c31\u662fMath.pow(16,4)\u8fd4\u52a0\u7684\u662f2
\u5165\u53c2\u662f\u4e24\u4e2adouble\uff0c\u6309\u4f60\u7684\u8981\u6c42\uff0c\u628a\u4e24\u4e2aint\u8f6c\u6210double\u5c31\u884c\u4e86\u3002

一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解?
=============
这么理解
一个10进制数左移n位,就是将这个数乘以10的n次方,右移就是将这个数除以10的n次方
比如1,左移2位,得100(十进制),
一个 2进制数左移n位,就是将这个数乘以 2的n次方,右移就是将这个数除以 2的n次方
比如1,左移2位,得100(二进制),换十进制等于4
位运算是以2进制操作。

要把这个数二进制化就能理解了。如十进制的2,二进制表示是0010。2左移3位,就是在二进制的低位补3个0,然后变成00010000,转成十进制就是16,即2*2^3。右移也是一样的理解就好了。

我们生活中用的就是十进制:一位最多有九个数字(最大的就是9)超过了就要进位(10就是超过9进位得到的)
再想想我们平时在一个数的后面加n个0减n个0的是不是相应的乘了或者除了n个10?相应的是不是乘了或者除了10的n次方?现在换成二进制了而已。

扩展阅读:java是干什么的 ... java是什么 ... java入门网站 ... java官网网址 ... javascript java ... 在java ... java中2的n次怎么写 ... java中数字n的阶乘计算 ... java中10的n次方怎么表示 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网