移位运算(无符号移位运算,有符号移位运算)

移位运算(无符号移位运算,有符号移位运算)移位运算,所有移位以5和-5为例移位运算左移(<<)正数负数带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))正数负数不带符号右移(>>>)(>>>为java独有语法)正数负数移位运算可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型一个int类型占4个字节,共32位,带符号…

大家好,又见面了,我是你们的朋友全栈君。

移位运算

可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型
一个int类型占4个字节,共32位,带符号位,所以最高位位符号位(使用0,1表示符号位)

我们首先需要了解正数和负数的二进制码分别如何表示(以5和-5为例)

正数:0000 0000 0000 0101
负数:1000 0000 0000 0101

移位操作在二进制中都是补码移位在转会为原码得到相应的值
正数的反码,补码与原码相同
负数的反码为除符号位全部取反
负数的补码为反码加1

所以 在对正数进行移位操作时就是对原码进行操作
负数是对补码操作,操作完成后再转换为原码得到对应的值
所以-5的补码为:1111 1111 1111 1011

左移(<<)

正数

 5左移三位:0000 0000 0010 1000 =40

负数

-5左移三位:补码:1111 1111 1101 0111
原码:1000 0000 0010 1000
得:-40

带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))

正数

5右移三位:0000 0000 0000 0000 =0

负数

-5右移三位:补码:1111 1111 1111 1111
反码:1111 1111 1111 1110
原码:1000 0000 0000 0001
得:-1

不带符号右移(>>>)(>>>为java独有语法)

正数

5右移三位:0000 0000 0000 0000 =0

负数

-5右移三位:补码:0001 1111 1111 1111 1111 1111 1111 1111
反码:0001 f f f f f f 1110
得:536 870 911

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158530.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unity的Lerp插值运算

    Unity的Lerp插值运算floatresult Mathf Lerp floata floatb floattime Vector3res Vector3 Lerp Vector3start Vector3endPo floattime 以上两种方法均为插值运算 第一个是一维插值 第二个是三维插值 其方法含义以第一个方法为例 代表的意义是 result a b

    2025年9月20日
    6
  • 统计电影票房排名前10的电影并存入还有一个文件

    统计电影票房排名前10的电影并存入还有一个文件

    2022年1月24日
    76
  • leetcode-55跳跃游戏[通俗易懂]

    leetcode-55跳跃游戏[通俗易懂]给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标

    2022年8月9日
    7
  • Linux Sendfile 的原理与优点[通俗易懂]

    Linux Sendfile 的原理与优点[通俗易懂]sendfile函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝。sendfile函数的定义例如以下:#include&lt;sys/sendfile.h&gt;ssize_tsendfile(intout_fd,intin_fd,off_t*offset,size_tc…

    2022年5月6日
    69
  • sqlformat数字格式化_java怎么输出数字

    sqlformat数字格式化_java怎么输出数字前言以前用到要对数字格式的地方,都是直接到网上搜一下。拿过来能用就行。因为平时用的不多。但是最近的项目对这个用的多了。网上拿来的不够用了。自己看了java源码把这方面恶补了。而且最近也好长时间没有写博客了。正好写一篇抛砖引玉吧。正文如果你对java源码比较了解。你会发现java对文字,数字的格式化,是有一个公共的父类的Format。NumberFormat和DecimalFormat都是它…

    2022年10月8日
    3
  • 十字路口plc交通灯程序_十字路口红绿灯plc编程实训

    十字路口plc交通灯程序_十字路口红绿灯plc编程实训知识点和关键字:定时器触点比较指令传送指令变址应用数据块控制要求示意图时序图工艺流程图当该路口是红灯时,另外一个路口是通行时间,绿灯亮和黄灯闪亮;当另外一个路口转红灯时,该路口成为通行时间,绿灯亮和黄灯闪亮。程序控制1十字路口交通灯控制程序1,使用了一个定时器来控制,该定时器在一个动作周期内,从0开始随着时间经过逐步增大一直到140,使用定时器过程值来控制红绿灯,如图…

    2025年10月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号