移位操作符

移位操作符操作运算对象是 位(bit)

它处理的数据类型只能是 整数类型(int)

先大概看一下图,了解它是怎么移动的,下面会解释规则

移位的时候关注两点,  1.移动的方向 2.空缺位置的填补形式.

"有符号"左移位操作符(<<)  将二进制数据左移(在低位补0).

int i = 12448;
System.out.println(Integer.toBinaryString(i<<5)); 
/* 将i的二进制表示 11000010100000
* 向左移动5位,在低位补0,结果是1100001010000000000
*/

int i = -12448;
System.out.println(Integer.toBinaryString(i<<5)); 
/* 将i的二进制表示 11111111111111111100111101100000
*向左移动5位,在低位补0,结果是11111111111110011110110000000000
*/
 

"有符号"右移位操作符(>>)  将二进制数据右移.(若符号原来,就在高位插入0,为就在高位插入1

 

int i = 12448;
System.out.println(Integer.toBinaryString(i>>5));
/*二进制表示:
11000010100000
*右移5位: 110000101 对比看出,当为正数时高位的0不显示
*/
i = -12448; System.out.println(Integer.toBinaryString(i>>5));
/*二进制表示:11111111111111111100111101100000
*右移5位: 11111111111111111111111001111011
*/

 

相对有符号右移

"无符号"右移操作符(>>>) 就是说,无论数据是正负都在高位插入0.

 

i = 12448;System.out.println(Integer.toBinaryString(i>>>5));
/*二进制表示: 11000010100000
 *无符号右移5位 110000101
*/

i = -12448;
    System.out.println(Integer.toBinaryString(i>>>5));
/*二进制表示: 11111111111111111100111101100000*无符号右移5位 111111111111111111001111011
*/
 

 

"移位" 与 "等号" 组合使用 表示方法"<<=或>>=或>>>="

这样会执行两步操作,先移位,然后赋值.

话不多说练习代码贴出来

public class BitManipulation {/*** 位的操作*/public static void main(String[] args) {Random rand = new Random(47);int i = rand.nextInt();int j = rand.nextInt();printBinaryInt("-1", -1);printBinaryInt("+1", +1);int maxpos = 2147483647;printBinaryInt("maxpos", maxpos);int maxneg = -2147483648;printBinaryInt("maxneg", maxneg);printBinaryInt("i", i);printBinaryInt("~i", ~i);printBinaryInt("-i",-i);printBinaryInt("i", i);printBinaryInt("j", j);printBinaryInt("i&j", i&j);printBinaryInt("i|j", i|j);printBinaryInt("i^j", i^j);printBinaryInt("i<<5", i<<5);printBinaryInt("i>>5", i>>5);printBinaryInt("(~i)i>>5", (~i)>>5);printBinaryInt("i>>>5", i>>>5);printBinaryInt("(~i)>>>5", (~i)>>>5);//-----------------------------------------long l = rand.nextLong();long m = rand.nextLong();printBinaryLong("-1l", -1l);printBinaryLong("+1l", +1l);long ll = 9223372036854775807L;printBinaryLong("maxpos", ll);long lln = -9223372036854775808L;printBinaryLong("maxneg", lln);printBinaryLong("l", l);printBinaryLong("~l", ~l);//注意这里的数字
        printBinaryLong("m", m);printBinaryLong("l|m", l|m);printBinaryLong("l^m", l^m);printBinaryLong("l<<5", l<<5);printBinaryLong("l>>5", l>>m);printBinaryLong("(~l)>>5", (~1)>>5);printBinaryLong("l>>>5", l>>>5);printBinaryLong("(~l)>>>5", (~l)>>>5);}//对整数进行处理static void printBinaryInt(String s,int i){System.out.println(s+", int:"+ i +",binary:\n"+Integer.toBinaryString(i));}//对长整形数据进行处理static void printBinaryLong(String s,long l){System.out.println(s+",long:"+l+",binary:\n"+Long.toBinaryString(l));}}

 

转载于:https://www.cnblogs.com/vawa/p/4021798.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenGL】详解第一个OpenGL程序

写在前面 OpenGL能做的事情太多了&#xff01;很多程序也看起来很复杂。很多人感觉OpenGL晦涩难懂&#xff0c;原因大多是被OpenGL里面各种语句搞得头大&#xff0c;一会gen一下&#xff0c;一会bind一下&#xff0c;一会又active一下。搞到最后都不知道自己在干嘛&#xff0c;…

基于 Editor.js 开发富文本编辑器库

开始 Editor.js 提供了简单而直观的用户界面&#xff0c;根据需求可以灵活添加自定义的编辑工具&#xff0c;通过插件扩展功能 Editorjs 使用 js 开发&#xff0c;脱离框架依赖&#xff0c;因此可以基于它封装富文本编辑器&#xff0c;用于 Vue 和 React 项目 editor-js-com…

dell服务器从硬盘引导,就是折腾 篇三:戴尔H710 mini(D1版本)阵列卡刷直通模式 附硬盘引导和还原IR模式办法...

就是折腾 篇三&#xff1a;戴尔H710 mini(D1版本)阵列卡刷直通模式 附硬盘引导和还原IR模式办法2021-07-24 10:00:201点赞13收藏12评论首先断开电池&#xff0c;确保阵列卡牢牢插入主板&#xff0c;没有松动。否则可能像我一样启动后识别不了raid卡。经实际测试&#xff0c;机器…

(转)你的团队需要一个领袖,而不是一个主管

作为这个社会的一员&#xff0c;你有你自己想要追随的领袖&#xff0c;他们是一种超人的存在&#xff0c;在各自的领域出类拔萃&#xff0c;拥有强大的人格力量。你不由自主的追随着精神领袖 Steve Jobs、王阳明、默罕默德&#xff1b;音乐领袖崔健、Bruce Springsteen、Michae…

硬件服务器采购指南,硬件组装_服务器采购指南_太平洋电脑网PConline

这个机箱不支持普通大光驱&#xff0c;要用超薄光驱&#xff0c;超薄光驱是不可以直接用IDE数据线连接&#xff0c;必须用一个很小光驱转接卡&#xff0c;当然电源接口是和软驱电源接口通用的。光驱转接板这次我们采用的电源&#xff0c;也比较突出。电源是一个不能马虎的东西&…

ExecuteScalar

ExecuteScalar运行查询&#xff0c;并返回查询所返回的结果集中第一行的第一列或空引用&#xff08;假设结果集为空).忽略其它列或行. 使用 ExecuteScalar 方法从数据库中检索单个值。 由于不用创建行集、查找值并关闭行集&#xff0c;所以产生的系统开销很小与使用 ExecuteRea…

计算机启动软件,计算机软件及应用启动会-20210703001237.pptx-原创力文档

晨操劲舞;业绩播报;昨天--今天--明天;昨天;遇到的困惑;有时我们感觉辛苦、累&#xff01;;入行的初衷;1、为了收入2、为了改变环境与现状3、为了找个事情做4、为了锻炼自己5、为了生存&#xff01; 试一试 ……;忆往昔&#xff0c;峥嵘岁月稠……;今 天;;先往 三只锅里倒入一些…

文件夹没有安全选项-文件上传下载-路径访问被拒绝

在文件的下载和上传中&#xff0c;有时候会出现“路径。。。访问被拒绝”&#xff0c;这是由于权限问题引起&#xff0c;只要给文件所在的文件夹设置权限为everyone就可以解决了&#xff0c;但是有时候文件夹属性没有“安全”选项卡&#xff0c;解决方法如下&#xff1a; 第一种…

css3 背景等比例,纯 CSS,不用背景,实现图片等比例展示

最简单的等比例&#xff1a;div img { max-width:100%; max-height:100%; }如上显示效果是&#xff1a;图片等比例缩放&#xff0c;不变形&#xff1b;图片所有区域都会显示。但是&#xff0c;如上代码有可能会造成横向、纵向白边&#xff0c;当我们在做图片列表时&#xff0c;…

emctl start dbconsole OC4J_dbconsole*** not found

C:\windows\system32>emctl start dbconsole OC4J Configuration issue. D:\app\product\11.1.0\db_1/oc4j/j2ee/OC4J_DBConsole_ghost1_orcl not found. 查看监听状态&#xff0c;环境变量 C:\windows\system32>echo %ORACLE_HOME% D:\app\product\11.1.0\db_1C:\window…

360剑灵洪门崛起服务器维护,剑灵洪门崛起————【维护】8月1日更新维护公告...

亲爱的玩家&#xff1a;大家好&#xff01;为了更新游戏内容&#xff0c;提升游戏体验&#xff0c;7k7k《剑灵洪门崛起》将于8月1日7:00-8:00对所有服务器进行更新维护&#xff0c;维护期间无法登陆游戏&#xff0c;维护时间预计1小时。如果在维护期间无法完成维护相关事宜&…

高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位

您好&#xff01;AMap.clear()方法&#xff0c;将地图上全部的覆盖物都清除&#xff0c;包括定位的小蓝点。如果不想清除定位的图标&#xff0c;有两种方法&#xff1a;方法一&#xff1a;将自定以的marker存好&#xff0c;清除时&#xff0c;调用marker.remove()方法&#xff…

易票365显示连接服务器失败,易票365服务器地址参数

易票365服务器地址参数 内容精选换一换查看指定VPC通道的弹性云服务器列表。您可以在API Explorer中调试该接口。GET /v2/{project_id}/apic/instances/{instance_id}/vpc-channels/{vpc_channel_id}/members状态码&#xff1a; 200状态码&#xff1a; 400状态码&#xff1a; 4…

语言统计学中的几个定律,可作为设计检索的参考

30定律&#xff1a;出现频率最高的30个词占全文本总词数的30&#xff05;如果剔除150个最高频率的词&#xff08;由于df过大被认为是停用词&#xff09;&#xff1a;倒排表记录总个数会减少25&#xff0d;30&#xff05;Zipf定律&#xff1a; 在自然语料库中所有term的freq&…

so打包进APK

问题描述我本身有个现成的SO文件&#xff0c;想通过编译方式打包进APK里&#xff0c;不知道该怎么做&#xff1f; 解决方案1libs/armeabi/是在项目根目录中&#xff0c;应该可以 解决方案2大哥&#xff0c;so放到lib目录中&#xff0c;打包时&#xff0c;会自动编入APK&#xf…

保存hbitmap到文件

void SaveBitmapToFile(HBITMAP hBitmap, char* szfilename) {HDC hdc; //设备描述表int ibits;WORD wbitcount; //当前显示分辨率下每个像素所占字节数//位图中每个像素所占字节数&#xff0c;定义调色板大小&#xff0c;位图中像素字节大小&#xff0c;位图文件大小 &a…

linux rz批量上传

rz -be 转载于:https://www.cnblogs.com/hh6plus/p/5548082.html

Linux makefile 教程 很具体,且易懂

近期在学习Linux下的C编程&#xff0c;买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊&#xff0c;可能是我的理解能不行。 于是google到了下面这篇文章。通俗易懂。然后把它贴出来&#xff0c;方便学习。 后记&#xff0c;看完发现这篇文章和《Linux环境下的C…

不要怂!就是干!

来大学快两个月了&#xff0c;总的来说还可以&#xff0c;顺利进入了学生会&#xff0c;成为了ACM协会的外部人员&#xff0c;没有水土不服关系不合等大碍&#xff0c;一切都很正常。 可是&#xff0c;我最害怕的事还是发生了&#xff0c;C语言的学习遇到了瓶颈&#xff0c;往前…