移位操作符

移位操作符操作运算对象是 位(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;机器…

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

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

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

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

易票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&…

Linux makefile 教程 很具体,且易懂

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

如何改善虚幻引擎中的游戏线程CPU性能表现

您游戏中的帧频率是不是太低&#xff1f; 您了解为什么会发生这种现象吗&#xff1f; 这是不是由于您同时生成了太多敌人&#xff1f;还是由于某个特定敌人过于消耗系统资源&#xff1f; 是由于您设置了过多的视觉特效&#xff0c;还是由于您所设计的战斗系统所造成的&#xff…

UE 光影参数

平行光的光影效果参数 天光的光影效果参数 让材质不反射光&#xff0c;也就是材质本身的颜色不起作用&#xff0c;只能使用自发光 去掉模型光影效果

《BI项目笔记》多维数据集中度量值设计时的聚合函数

Microsoft SQL Server Analysis Services 提供了几种函数&#xff0c;用来针对包含在度量值组中的维度聚合度量值。默认情况下&#xff0c;度量值按每个维度进行求和。但是&#xff0c;通过 AggregateFunction 属性&#xff0c;您可以修改此行为。聚合函数的累加性可确定度量值…

零基础Unreal Engine 4(UE4)图文笔记之粒子系统

1.我们需要创建两个东西&#xff0c;一个材质一个粒子。先打开材质&#xff0c;在制作粒子之前&#xff0c;我们首先需要自己创建一个粒子效果能用的材质 在材质编辑器中&#xff0c;修改细节中Blend Mode类型为Translucent&#xff0c;Shading Model 为Unit&#xff0c;这一步…

[UE4]性能优化指南(美术向)

参考自官方文档&#xff1a; Performance Guidelines for Artists and Designershttps://docs.unrealengine.com/en-us/Engine/Performance/Guidelines 但是官方文档写的太粗燥&#xff0c;对UE4没有一定了解&#xff0c;很难理解文档的意图。这里我在官方文档的基础上&#x…

UE4 Fix – “Lighting build failed. Swarm failed to kick off.”

Hello! Have you encountered the “Swarm Failed to Kick Off” error on an Unreal Engine project when trying to build a level? I did, after we switched to a custom engine build. Since most of the resources on the web were not helpful. Here’s a really simpl…

贪吃蛇 WPF

贪吃蛇 WPF using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Wind…

阿旺wifi智能系统源码

系统简介本系统适合DD-WRT固件路由器和OoenWrt固件路由器或者任何带有WIFIDOG插件的路由器。系统基于ThinkPHP框架PHPMySQL的技术开发。系统主要功能: 1.无密码认证&#xff1a;只点击按钮或强制看广告1.验证码认证&#xff1a;招待券认证、一次性账号、指定时间限制3.用户名密…

warning C4828问题的处理

warning C4828: 文件包含在偏移 0x215 处开始的字符&#xff0c;该字符在当前源字符集中无效(代码页 65001)。 (编译源文件 XXXXXXcpp) 这提示是由于字符集的问题导致&#xff0c;解决方案如下 点击VS2017 文件->另存为->编码保存->65001 然后重新编译,警告问题解决…

lecture3-线性神经元和算法

Hinton第三课 这节课主要是介绍NN的输出端常用的神经元&#xff0c;然后重点是说明怎么使用BP来计算偏导数&#xff0c;在Hinton这一课中&#xff0c;他提供了他1986年参与写的《并行分布处理》一书的第8章&#xff0c;49页&#xff0c;这本书的编者是当你的认知神经界的Rumelh…

8个有趣的Linux提示与技巧

我们时不时给你带来关于Linux的提示与技巧。这里我们总结了8个最有趣的提示和技巧。推荐学习Linux视频教程。 以它们的大小列出文件如果你想要一个基于它们大小排序的文件列表&#xff0c;你可以使用下面的命令。它会以递减顺序排列文件。# ls -l | grep ^- | sort -nr -k 5 | …