首页 > 试题广场 >

Java表达式"13 & 17"的结果是什么?()

[单选题]

Java表达式"13 & 17"的结果是什么?()

  • 30
  • 13
  • 17
  • 1
&运算符:两个数都转为二进制,然后从两个数的最高位进行与运算,两个都为真(1),结果才为真(1),否则为假(0)
13:01101
17:10001
结果:00001,既为1
发表于 2019-07-03 11:16:20 回复(9)
&在Java中是位运算符,如果相对应位都是1,则结果为1,否则为0。13和17都为单数,所以二进制后最后一位都是1,所以结果为1
发表于 2019-07-02 18:31:34 回复(0)

单纯是不会

发表于 2019-10-05 02:40:46 回复(1)
速算小技巧,&运算结果一定比以前的值小,| 运算一定比以前的值大。所以直接选D
发表于 2022-04-12 09:52:01 回复(1)
我不会算。但我知道,他不可能是13或者17,也不是相加,所以不是30。

发表于 2020-03-12 15:51:52 回复(1)
&既是逻辑与,也是按位与,当表达式结果为boolean的时候,就是逻辑与,当表达式是数值的时候就是按位与,13转为二进制是01101,17转为二进制是10001,只有对应位都为1,按位与之后才是1,所以结果是00001,结果就是1
编辑于 2020-05-17 10:03:03 回复(0)
   考点:
     Java基础——》运算符——》位运算符——》按位运算符——》&

    十进制转换二进制

发表于 2019-08-29 19:05:11 回复(0)
这又不是加减法,不选A
为什么是13不是17,B不选
为什么是17不是13,C不选
选D,&和|运算,返回0或1
发表于 2022-06-18 09:07:10 回复(1)
知识点:&与&&、|与||、^、<<、>>、~、>>>运算符
  1. &(按位与)

    &按位与的运算规则是将两边的数转为二进制数,然后运算的最终值,运算规则即(两个为真才为真)1&1=1、1&0=0、0&0=0、0&1=0。 3的二进制位为0000 0011,5的二进制位是0000 0101,011&101=0000 0001,最终值为1。 7的二进制位为0000 0111,111&101=0000 0001,最终值为5。

  2. &&(逻辑与)

    &&逻辑与也称为短路逻辑与,先运算&&左边的表达式,一旦为假,后续不管多少表达式,均不再计算,一个为真,再计算右边的表达式,两个为真才为真。

  3. |(按位或)

    |按位或和&按位与计算方式都是转换二进制再计算,不同的是运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

    6的二进制位0000 0110 , 2的二进制位0000 0010 , 110|010为110,最终值0000 0110,故6|2等于6

  4. ||(逻辑或)

    逻辑或||的运算规则是一个为真即为真,后续不再计算,一个为假再计算右边的表达式。

  5. ^(异或运算符)

    ^异或运算符顾名思义,两个值相异结果为真,其运算规则为1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

    5的二进制位是0000 0101 , 9的二进制位是0000 1001,也就是0101 ^ 1001,结果为1100 , 00001100的十进制位是12

  6. <<(左移运算符)

    5<<2的意思是5的二进制位往左移两位,即0000 0101左移为0001 0100成20(正数左边第一位补0,负数补1,等于乘于2的n次方)。

  7. >>(右移运算符)

    凡位运算符都是把值先转换成二进制,再进行后续的处理。5的二进制位是0000 0101,右移两位就是把101左移后为0000 0001,正数左边第一位补0,负数补1,等于除于2的n次方,结果为1。

  8. ~(取反运算符)

    取反就是1变0,0变1。5的二进制位是0000 0101,取反就是1111 1010,即-6

  9. >>>(无符号右移运算符)

    • 正无符号数右移

      无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移多少位补多少个0。 15的二进制位0000 1111,右移二位为0000 0011结果为3。

    • 负无符号数右移

      -6的二进制位是6的二进制位取反再加1,6的二进制也就是0000 0000 0000 0000 0000 0000 0000 0110,取反后加1就是1111 1111 1111 1111 1111 1111 1111 1010,右移三位0001 1111 1111 1111 1111 1111 1111 1111

                 
发表于 2023-07-26 21:19:48 回复(0)
我是菜鸡
发表于 2021-07-02 19:53:53 回复(0)
&为与运算,同真(为1)为真,一假(为0)则假;
将13和17转变为二进制:
13:1101
17:10001
&:00001
最终结果为1
发表于 2019-12-25 14:57:30 回复(0)
 &是二进制换算 需要先转为二进制后再进行与运算
    13的二进制是01101 
    17的二进制是10001  
    他们的与值是00001
发表于 2022-09-06 16:50:03 回复(1)
&运算的时候要先换成二进制,都是1才为1 ,否则为0
发表于 2021-08-26 12:34:23 回复(0)

单纯的不想做这种题

发表于 2020-02-25 17:12:45 回复(0)
不用先转化为补码再与吗?还是说原码与和补码与的值一样
编辑于 2024-03-14 10:52:03 回复(0)
没写出来,要写全
编辑于 2024-02-17 21:32:31 回复(0)
       此题,需将两边都化为二进制,13的二进制数为 1101,17的二进制数为 10001,两位都为1则得1否则得0,所以得出结果为1。
       有小伙伴觉得这题得1是因为其是两个正数,都为真,所以得1,其实不然,得1 只是一个偶然
        我们再来一个例子,18 &25  18化为二进制 10010,25化为二进制 11001,此时进行与操作,得10001,化为十进制为 17
发表于 2024-02-01 12:57:40 回复(0)
先用补码进行运算,然后转原码,和C语言的运算逻辑一致
编辑于 2023-12-09 00:21:19 回复(0)
Java表达式"13 & 17"的结果是1。这是因为"13 & 17"是一个按位与运算,它比较两个整数的二进制位,如果两个位都是1,就返回1,否则返回0。
13的二进制表示是1101,17的二进制表示是10001。我们可以用下面的方式对齐补齐它们:
  01101 10001
然后我们可以对每一位进行按位与运算:
  01101& 10001  得到0001
最后,我们可以把结果0001转换成十进制,就得到1。


发表于 2023-03-28 15:22:00 回复(0)
13:01101
17:10001
按位&操作,两个1才能为1
结果为00001 即1

发表于 2022-08-29 17:14:03 回复(0)