首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java奇异程序输出中的Shift运算符

在Java中,Shift运算符是一种位操作符,用于将一个数字的二进制位向左或向右移动指定的位数。Shift运算符有两种:左移位运算符(<<)和右移位运算符(>>)。

左移位运算符(<<)将一个数字的二进制位向左移动指定的位数,右边空出的位用0填充。例如,将数字5(二进制表示为00000101)向左移动2位,结果为20(二进制表示为00010100)。

右移位运算符(>>)将一个数字的二进制位向右移动指定的位数,左边空出的位用符号位填充。例如,将数字20(二进制表示为00010100)向右移动2位,结果为5(二进制表示为00000101)。

在Java中,Shift运算符的语法如下:

代码语言:txt
复制
<< 左移位运算符
>> 右移位运算符

例如,以下代码将数字5向左移动2位,并将结果打印到控制台:

代码语言:java
复制
int num = 5;
int shiftedNum = num << 2;
System.out.println(shiftedNum); // 输出20

以下代码将数字20向右移动2位,并将结果打印到控制台:

代码语言:java
复制
int num = 20;
int shiftedNum = num >> 2;
System.out.println(shiftedNum); // 输出5

Shift运算符在Java中广泛应用于位操作、加密、压缩等领域。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 移位运算符Shift Operator)

3 个移位运算符 Java 只有 3 个移位运算符, > (带符号右移)和 >>> (无符号右移)。 为什么有 3 个,移位运算不是左就是右,为什么有 3 个?...类型 长度 long 64 位 int 32 位 short 16 位 byte 8 位 char 16 位 整数 2 进制表达 在 Java 整数 int 表达,其中有一个位留给了符号位置,所以真正可以存储数据位为...log.debug("{}/{}", Integer.toBinaryString(12 << 8), Integer.parseInt(Integer.toBinaryString(12 << 1), 2)); 程序输出为...,我们会发现对应 2 进制长度不一样,因为在 Java 程序对于二进制,前面为 0 时候,在输出时候会进行丢弃。...所以显示长度不一样,如果希望显示长度一致的话,前面补 0 就可以了。 https://www.ossez.com/t/java-shift-operator/14594

24520

Java 比较运算符

(他脑子里定势一直以为 List 类型参数还是 long 呢),Java 就是比 C++ 矫情。想想 IDE 这里只是警告,并不是错误,所以也不加理会继续完成他代码去了。...小菜鸟惭愧极了,基础不牢靠啊,赶紧翻出自己 Java 入门书对应章节看了一下,看完才恍然大悟,原来 Java比较运算符里还有这么多小细节呢……不是把 C++ 里经验直接照搬过来就行了。...Java 比较运算符一些细节 >、>=、< 和 <= 只支持两边操作数都是数值类型。 == 和 != 两边操作数可以都是数值类型,也可以都是引用类型,但必须是同一个类实例。...原因是在 java.lang.Integer 类里,对 -128~127 之间整数自动装箱成 Integer 实例,并且缓存了起来,所以对此范围内整数自动装箱时,实际上都指向了缓存里对象,所以会出现上面的情况...最佳实践 引用类型实例之间,除非想要知道是否是引用同一个对象,否则它们之间比较,总是使用 equals() 方法。 参考 《疯狂 Java 讲义》——李刚著 第 3.7.5 节 比较运算符

1.3K20

Java 比较运算符

小菜鸟才学习 Java 没多久,这天要写一个存储长整形列表,于是这样写: List listData = new ArrayList(); 这时 Android Studio...(他脑子里定势一直以为 List 类型参数还是 long 呢),Java 就是比 C++ 矫情。想想 IDE 这里只是警告,并不是错误,所以也不加理会继续完成他代码去了。...小菜鸟惭愧极了,基础不牢靠啊,赶紧翻出自己 Java 入门书对应章节看了一下,看完才恍然大悟,原来 Java比较运算符里还有这么多小细节呢……不是把 C++ 里经验直接照搬过来就行了。...Java 比较运算符一些细节 >>=<<= ==!= 当 和 引用同一个对象时,则 ,否则 。 每种数值类型都有对应包装类,比如 long 包装类 Long。...包装类实例可以与数值型值比较,是直接取出包装类实例所包装数值来比较。 涉及自动装箱后情况复杂了一些,比如 这时 ina == inb 成立,而 inc == ind 不成立。

1K30

Java运算符

本人技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上你有所助益。...Java运算符 文本关键字:位运算符、位逻辑运算符、移位运算符 一、位运算符 大家在接触运算符时候通常都已经学完了变量使用,对于算术以及赋值运算感觉就是So easy!...对于整数和字符型运算符操作也有一些潜在法则,相信看完这篇文章你很容易就会掌握。 二、逻辑运算 在逻辑运算我们已经使用过能够表达逻辑意义运算符,如:&&,||,!。...与(&) 与运算 与运算相当于物理电路串联电路,我们假设用1代表通路,用0代表断路,那么对于串联电路来说,只有当运算符两边全为1(通路)时,运算结果才为1(通路)。 ? ?...或(|) 或运算 或运算相当于物理电路并联电路,我们假设用1代表通路,用0代表断路,那么对于并联电路来说,只要运算符两边有一个为1(通路)时,运算结果就为1(通路)。 ? ?

64830

java输出数组方法_java怎样输出数组所有元素

文章目录 数组输出三种方式 一维数组: 1. 传统for循环方式 2. for each循环 3. 利用Array类toString方法 二维数组: 1....利用Array类toString方法 数组输出三种方式 一维数组: 定义一个数组 int[] array = { 1,2,3,4,5}; 1....利用Array类toString方法 调用Array.toString(a),返回一个包含数组元素字符串,这些元素被放置在括号内,并用逗号分开 int[] array = { 1,2,3,4,5...}; System.out.println(Arrays.toString(array)); 输出:[1, 2, 3, 4, 5] 注意:System.out.println(array);这样是不行...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183101.html原文链接:https://javaforall.cn

4.6K30

Java 基础篇】Java 标准输出流详解:输出程序之美

Java 编程,标准输出流是一个重要概念。它允许我们将程序输出信息显示在终端或控制台上,这对于调试、用户界面和与用户交互非常重要。...在这篇文章,我们将深入探讨 Java 标准输出流,了解如何使用它以及一些常见用法和技巧。 什么是标准输出流?...在 Java ,标准输出流通常表示为 System.out,它是 java.io.PrintStream 类实例。这个输出流用于向控制台或终端窗口打印文本信息。...(originalOut); } 这样,你可以在程序根据需要切换标准输出目标。...在实际应用,特别是在生产环境,更推荐使用专业日志框架以及良好日志管理实践。 总结 Java 标准输出流是一个重要工具,用于打印程序输出信息。

31520

Java|聊聊运算符“目”

问题描述 Java是一门面向对象编程语言,不仅吸收了C++语言各种优点,还摒弃了C++里难以理解多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。...相对于Python来讲,Java语句数量显然有所增加,写语句思想却大同小异。...在前段时间,在许多关于Java教程,比如菜鸟教程和Java基础教程一书中,在关于运算符知识块讲解时,都有提到一个字眼“目”。比如:条件运算符“?:”是一个3目运算符。...比如,“+”当在程序中表示值为正时候,“+”就和这一个操作数参与构成正数(+op),举个例子“+10”,此时它就是单目运算符;当在程序中表示相加(op1+op2)时候,它又是一个双目运算符,例如“1...在有些地方,也将某目运算符叫做某元运算符。当然,其中“元”也是指操作数个数。 结语 在学习知识时候,不能仅凭猜想学习,在学习过程,更要知其所以然。

61420

java移位运算符:,>>>总结

java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     ...无符号右移,忽略符号位,空位都以0补齐 下面来看看这些移位运算都是怎样使用 1 /** 2 * 3 */ 4 package com.b510.test; 5 6 /** 7...number >> 1; 21 //右移一位 22 printInfo(number); 23 } 24 25 /** 26 * 输出一个...; 看了上面的demo,现在是不是对左移和右移了解了很多了呢 对于:>>>  无符号右移,忽略符号位,空位都以0补齐 value >>> num     --   num 指定要移位值value 移动位数...无符号右移规则只记住一点:忽略了符号位扩展,0补最高位  无符号右移运算符>>> 只是对32位和64位值有意义 E | hongtenzone@foxmail.com  B | http://www.cnblogs.com

90050

2.3 java运算符(一)

上篇文章我们刚刚研究了java变量和数据类型,这节课我们来介绍一下java运算符java运算符主要分为: 算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符和三目运算符。...ok,减减用法和加加一样。 2. 赋值运算符 赋值运算符,最常见就是“=”,a=4;实际就是把等号右边4赋值给等号左边变量a,所以a值变成了4....在赋值运算符,除了等号以外,还有这么几种, 分别是:+=,-=,*=,/=,%= 这几个也是比较常见,需要注意是,赋值运算符左边必须是变量,不能是常量。...而这个+=运算规则是这样, a+=b;就相当于a=a+b; 只不过在+=实际上包含了一个强制类型转换。这个我们通过一道经典面试题来了解一下。...s+=1;这句代码是没有问题,因为我们说过+=运算符包含了一个强制类型转换,所以也就相当于: s= (short)(s+1); ok,本篇文章我们先介绍着两种运算符,剩下运算符我们在后续文章中继续讲解

34330

java输出~6=-7原因

重要事情说在前边 在计算机,数值一直是使用补码进行存储 取反(~)和反码是不一样,取反是把数值转换成二进制之后每个位上取反,反码(正数和负数反码规则不一样) 正/反/补码解释 正数原码/...反码/补码 相同 正数取反(因为在计算机数值存储是按照数值补码进行存储,所以取反时候先计算出数值补码,然后取反) 负数原码:是该数值正值符号位变成1 负数反码:是其原码(除符号位)按位取反...负数补码转换为原码:和原码变补码一样,除符号位外取反+1 负数补码:负数反码+1 正/负数取反方法 正数取反方法: 取补码:和正数原码相同 按位取反:之后肯定是个负数 把对应补码转换成原码就是输出数...(此过程和原码取反码一样) 负数取反方法 取补码:先把负数取反,然后+1就得到补码 按位取反:因为去反后为整数 把对应补码转换成原码:因为正数原码=补码,所以不变 ~6在计算机计算 首先,6...(因为这个结果很明显是个负数,所以按照负数补码转换成原码公式来),由上述公式得到原码为:1000 0111 已经得到结果二进制,将二进制转换成十进制,得到-7 ~(-6)在计算机计算 首先,-

72230

java输出~6=-7原因

重要事情说在前边 在计算机,数值一直是使用补码进行存储 取反(~)和反码是不一样,取反是把数值转换成二进制之后每个位上取反,反码(正数和负数反码规则不一样) 正/反/补码解释 正数原码/反码.../补码 相同 正数取反(因为在计算机数值存储是按照数值补码进行存储,所以取反时候先计算出数值补码,然后取反) 负数原码:是该数值正值符号位变成1 负数反码:是其原码(除符号位)按位取反...负数补码转换为原码:和原码变补码一样,除符号位外取反+1 负数补码:负数反码+1正/负数取反方法 正数取反方法: 取补码:和正数原码相同 按位取反:之后肯定是个负数 把对应补码转换成原码就是输出数...(此过程和原码取反码一样) 负数取反方法 取补码:先把负数取反,然后+1就得到补码 按位取反:因为去反后为整数 * 把对应补码转换成原码:因为正数原码=补码,所以不变~6在计算机计算首先...(因为这个结果很明显是个负数,所以按照负数补码转换成原码公式来),由上述公式得到原码为:1000 0111 已经得到结果二进制,将二进制转换成十进制,得到-7 ~(-6)在计算机计算 首先,-

70130

Java基础教程(5)-Java运算符

Java运算符Java有4大类运算符:算术运算、位运算、关系运算和逻辑运算。另外Java还定义了一些附加运算符用于处理特殊情况。算术运算符算术运算符运算数必须是数字类型。...算术运算符不能用在布尔类型上,但是可以用在char类型上,因为实质上在Java,char类型是int类型一个子集。...但是,当递增或递减运算符作为一个较大表达式一部分,如果递增或递减运算符放在其运算数前面,Java就会在获得该运算数值之前执行相应操作,并将其用于表达式其他部分。...如果运算符放在其运算数后面,Java就会先获得该操作数值再执行递增或递减运算位运算符Java定义位运算直接对整数类型位进行操作,这些整数类型包括long,int,short,char byte。...日常用到不多;关系运算符关系运算符(relational operators)决定值和值之间关系。产生结果是布尔值。常用在if控制语句和各种循环语句表达式;主要有以下几种: == 等于!

7210

Java运算符>>和>>>区别

表示左移两位 <<表示左移移,不分正负数,低位补0; 注:以下数据类型默认为byte-8位 左移时不管正负,低位补0 正数:r = 20 << 2 正数:r = 20 << 2 20二进制补码...:0001 0100 向左移动两位后:0101 0000    结果:r = 80 负数:r = -20 << 2 负数:r = -20 << 2 -20 二进制原码...:1001 0100 -20 二进制反码 :1110 1011 -20 二进制补码 :1110 1100 左移两位后补码:1011 0000     ...0001 0100 向右移动两位后:0000 0101        结果:r = 5 负数:r = -20 >> 2 负数:r = -20 >> 2 -20 二进制原码...:1001 0100 -20 二进制反码 :1110 1011 -20 二进制补码 :1110 1100 右移两位后补码:1111 1011

16120

Java三元运算符

Java三元运算符 一、什么是三元运算符? 二、怎么使用三元运算符 三、关于三元运算符小练习 1、第一题 2、第二题 一、什么是三元运算符?...讲三元运算符之前,我们先讲一讲双目运算符,比如我们常用 “=” 赋值运算符,就是一个双目运算符。它格式如下: 表达式 = value;我们可以很明显看出一个等于号(“=”)连接了两个式子。...1、第一题 很简单一个题,输入小明成绩,如果高于95分,则为优秀,否则成绩良好 样例输入 95 样例输出 成绩一般 代码实现 import java.util.Scanner; /*...:"+a); } } 2、第二题 问题描述:输入一本书中共有多少条信息,在输入这本书每页能显示最大条数,输出这本书共有多少页(用三元运算符写) 样例输入: 12 (这本书总共有12条信息)...4(每页能显示4条信息) 样例输出 3 (这本书有3页) 代码实现 import java.util.Scanner; /** * @author gorit * @version 1.1

83520
领券