java异或运算运算问题

java的运算符*=的问题 关于*=运算符问题(结果不一样) int a=6; int b=_百度知道
java的运算符*=的问题 关于*=运算符问题(结果不一样) int a=6; int b=
java的运算符*=的问题关于*=运算符问题(结果不一样)int a=6;int b=50;for(int c=1;c&=a;c++)
LotteryOdds=LotteryOdds*(b-c+1)/c;//结果LotteryOdds=15 890 700而for(int c=1;c&=a;c++)
LotteryOdds*=(b-c+1)/c;//结果LotteryOdds=13 305 60求高手告诉下原因,谢谢
提问者采纳
LotteryOdds*=(b-c+1)/c;相当于 LotteryOdds=LotteryOdds*((b-c+1)/c);而不是LotteryOdds=LotteryOdds*(b-c+1)/c;虽然说*和/的优先级是一样的。但是由于b和c都是int类型的。所以会四舍五入。比如5/3是=1的。这就造成了结果不一致的情况。把第一个换成int a=6;int b=50;for(int c=1;c&=a;c++)
LotteryOdds=LotteryOdds*((b-c+1)/c);那就一样了
其他类似问题
按默认排序
其他5条回答
= ... * 是整个计算完,再给赋值。*= 会把右边的计算后,再乘。同时,整的乘法、除法,是取整的。 用double类型,可以验证
double a=6;
double b=50;
double aa=1;
double bb=1;
for(int c=1;c&=a;c++){
(aa*(b-c+1)/c );
bb*= ( (b-c+1)/c );
System.out.println(&aa=&+String.format(&%f&, aa));
System.out.println(&bb=&+String.format(&%f&, bb));
原因在于运算顺序。LotteryOdds=LotteryOdds*(b-c+1)/c;先计算LotteryOdds*(b-c+1), 然后在做/c操作LotteryOdds*=(b-c+1)/c;先计算 (b-c+1)/c, 再计算LotteryOdds * 前面的结果。本来先算什么后算什么不应该产生什么影响。但这里涉及到一个对整数做 / (整除)的操作,所以就有了差别。满意请采纳!
LotteryOdds是什么? 下面的先执行(b-c+1)/c,计算出来有小数,但是因为都是int,所以就把后面的小数给省略了,就出现了误差
这是不一样的,刚回答了一个这个是不一样的,运算符的优先级 LotteryOdds=LotteryOdds*(b-c+1)/c;是这样计算的:(LotteryOdds*(b-c+1))/c而LotteryOdds*=(b-c+1)/c;是这样计算的LotteryOdds*((b-c+1)/c);明白不?
运算顺序不一样,且不能整除,结果就会不同
运算符的相关知识
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁关于JAVA表格里数值计算的问题_百度知道
关于JAVA表格里数值计算的问题
new Integer(0),
};;中&quot,n);总和&低&: Object[][] p = {
&#47, new Integer(0),new Integer(0)}, new Integer(0);, new Integer(0);,
{& Object[] n = {&;};&#47,&事务项&quot, new Integer(0)}, new Integer(0);,&;
JTable table=new JTable(p;
JScrollPane s = new JScrollPane(table),&;高&quot, new Integer(0);UDF生成表格的各项值
{&quot, new Integer(0);EQ&quot,
new Integer(0);EIF&quot我的一个表格声明如下,new Integer(0鼐爽顿故塥嘎候旁)};EI&quot,请问如何实现,
new Integer(0),
new Integer(0),new Integer(0)},&quot, new Integer(0),
new Integer(0),p[0][2];,然后放到p[0][4]中去, new Integer(0),new Integer(0)}, new Integer(0);EO& 这时候我想实现一个功能 就是将p[0][1],p[0][3]所对应的表格中数值相加,
{&quot, new Integer(0)
多谢,Object怎么变成数字啊我查了下方法只有toString啊,2楼的哥们帮人帮到底吧嗯
提问者采纳
因为在用户重新安排表中的列时。同时用户的操作不会影响模型的列顺序:row - 其值要被查询的行column - 其值要被查询的列 返回:列是以表视图的显示顺序。这是一项重要的区别。 参数。 注,视图中给定索引处的列将更改,而不是以 TableModel 的列顺序指定的,
int column)返回 row 和 column 位置的单元格值public Object getValueAt(int row
其他类似问题
数值计算的相关知识
按默认排序
其他1条回答
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁java 运算问题_百度知道
java 运算问题
问题1byte b=(byte)0xf1byte d=(byte)(b&&&4)问题2byte b=(byte)0xf1byte e=(byte)((b&0xff)&&4)我想问的是在问题1的d把b&&&4的时候会上升至int,那么上升后的值是怎样的?例如:11 0001 还是怎样请打出来并解释还有问题二,((b&0xff)&&4)在这里面有没有把值上升到int呢?还是以btye进行运算?如果上升后的int的十六进制是什么?请打来看看.(byte)0xf1=0xff=结果=&&4=(不是吗?结果的高位不是1吗?因该会复制4个1吗?能不能解释过程)
提问者采纳
1.java中“左移位”运算符 “&&”,是将整型数据的二进制形式,各数位向左移动给定的位数。右边的空出的所有位数补0。如,a&&1,是将a的二进制表示形式,左移移位,右边补零。2.java中“有符号右移位”运算符 “&&”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数根据移位前,原来的内容,原来为0,就补0,原来为1就补1。3.java中“无符号右移位”运算符 “&&”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数补0。4.java中,移位运算符适用的数据类型有:byte short char int long。5.对于低于int型的操作数,先转换为int型再移位。即:原始数据类型执行算术运算(或按位运算),类型比int型小的(即char、byte、short、),在进行运算之前,这些值会自动提升成int型。参见:使用java原始数据类型的几处细节6.对于int型整数移位,a&&b,系统先将b对32取模,得到的结果才是真正的移位的位数。例如:a&&33和a&&1的结果是一样的。而,a&&32的结果就是a。(即一个int型数是32位的,如果你移动了32位,那么所有数位都移出了,就没有什么意义了,所以系统会先将移动的位数对32取模)7.对于long型整数移位,a&&b,系统先将b对64取模,得到的结果才是真正的移位的位数。8.a&&1与a/2的结果是一样的,a&&1与a*2的结果是一样的。总之,一个数右移n位的结果是这个数除以2的n次方。一个数左移n位的结果是这个数乘以2的n次方。所以,当我们需要用程序求2的n次方时,可以写成这样,iresult=1&&n;你自己慢慢算吧~~我只告诉你方法
其他类似问题
java的相关知识
其他1条回答
...我真的不会..一点都不会...
等待您来回答
您可能关注的推广回答者:回答者:
下载知道APP
随时随地咨询
出门在外也不愁java 浮点数计算问题_百度知道
java 浮点数计算问题
&lt,主要是后面这个((bits & 0x7fffff) | 0x800000)没看懂; 1).:
((bits & 0x7fffff) | 0x800000)解释一下这句话的意思.int窖愫光轿叱计禁韶 m = (e==0)?((bits & 0x7fffff) &lt
提问者采纳
得结合实际才行:0|0=0 1|0=1 0|1=1 1|1=10x7fffff用32位二进制表示就是
11 11 根据按位与的运算法则就是把bits的高9位清零,再左移一位。0x位二进制表示是 00 00 根据按位或的运算法则就是把第24位置1;&lt,然后再把第24位置1。和上面同理,就不用解释了吧,就是把所有二进制位向左移动若干位;”叫做左移,运算规则是。&叫做“按位与”。关于前半部分,“&lt这是位运算:0&0=糖擞粹股诔噶耕庞0 1&0=0 0&1=0 1&1=1“|”叫做“按位或”,就是先把bits的高9位清零后。至于问号,其规则是,((bits & 0x7fffff)|0x800000)的意思就是先把bits的高9位清零。那么综合来看,光看表达式的话无法知道其具体的意义是什么,一般在硬件控制方面用的多
提问者评价
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java 计算旅途时间问题_百度知道
java 计算旅途时间问题
程序填空,不要改变与输入输出有关的语句。输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。有效的时间范围是,不需要考虑出发时间晚于到达时间的情况。例:括号内是说明输入712 1411(出发时间是7:10,到达时间是14:11)输出The train journey time is 6 hrs 59 mins.计算方式如下:import java.util.Spublic class Test20004 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int time1, time2, hours,
time1=in.nextInt();
time2=in.nextInt();
/*------------------*/
time1=(time1/100)*60+time1%100;
time2=(time2/100)*60+time2%100;
hours=(time2-time1)/60;
mins=(time2-time1)-hours*60;
System.out.println(&The train journey time is &+hours+& hrs &+ mins+& mins.&);
}}请问其中的 time1=(time1/100)*60+time1%100; ime2=(time2/100)*60+time2%100; time1和time2如何得来的??为何除以100+time1%100??
大概知道为何这样计算了,只是不清楚 如果time1输入的是712 例如: time1=(712/100)*60+712%100;
后面的712%100 等于多少 怎么计算的?????????、
提问者采纳
time1=(time1/100)*60+time1%100;因为小时要从百位开始,time1/100整除求小时,把小时换算成分钟(time1/100)*60,time1%100余数即为分钟,两者相加为总分钟。=========================time2=(time2/100)*60+time2%100;time2同上。=========================hours=(time2-time1)/60 time2-time1两者相减就是旅途所用总分钟数,(time2-time1)/60整除求小时,因为1小时=60分钟。=========================mins=(time2-time1)-hours*60;time2-time1旅途所用总分钟数,hours*60表示小时,乘以60就是分钟,(time2-time1)-hours*60相减就是旅途所用分钟数。
大概知道为何这样计算了,只是不清楚 如果time1输入的是712 例如: time1=(712/100)*60+712%100;
后面的712%100 等于多少 怎么计算的?????????、
712%100= 12 意思就是712除以100然后取余数,712 ÷ 100 = 7 ...余12 这里就是取的后面的那个12。
那不对啊 我用system.out.peintln()
输出time1 结果是432啊
你是算的time1=(712/100)*60+712%100 = 7*60+12=420+12=432
额 程序是这样计算的啊 明白了 很感谢您的解答
类似的题目很多 我想多接触一下
试问 如果不看这个题目的答案的话 类似的问题解题思路如何寻找呢
这个题目应该主要是考察JAVA的基本运算,多练习一下就会熟悉了。
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 java运算符优先级表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信