简单记录下“<<”、“>>”和“>>>”的用法和区别

这篇具有很好参考价值的文章主要介绍了简单记录下“<<”、“>>”和“>>>”的用法和区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给出两种记忆方式,自己看哪种适合自己

方式一

在带符号的移位中,无论正数还是负数,移位后符号不变,数值变化:

正数:左移右移都补0;

负数:原码左移右移都补0,

           反码左移右移都补1,

           补码左移补0,右移补1;

方式二

 "<<"是指:向左移位,左移时不管正负,低位补0

注:以下数据类型默认为byte-8位

左移时不管正负,低位补0

正数:r = 20 << 2

  20的二进制原码==反码==补码:0001 0100

  向左移动两位后:0101 0000

         结果:r = 80

负数:r = -20 << 2

  -20 的二进制原码 :1001 0100   (第一个1为符号位,1表示负数)

  -20 的二进制反码 1110 1011    (除符号位外,其他位取反)

  -20 的二进制补码 :1110 1100    (反码 + 00000001)

  左移两位后的补码:1011 0000    (向左移位,低位补0

        反码:1010 1111     (补码 - 00000001)

        原码:1101 0000    

        结果:r = -80

">>"是指:向右移位,如果该数为正,则高位补0,若为负数,则高位补1;

注:以下数据类型默认为byte-8位

正数:r = 20 >> 2

  20的二进制补码:0001 0100

  向右移动两位后:0000 0101

       结果:r = 5

负数:r = -20 >> 2

  -20 的二进制原码 :1001 0100   (第一个1为符号位,1表示负数)

  -20 的二进制反码 :1110 1011    (除符号位外,其他位取反)

  -20 的二进制补码 :1110 1100     (反码 + 00000001)

  右移两位后的补码:1111 1011     (向右移位,高位补1

        反码:1111 1010

        原码:1000 0101

        结果:r = -5

">>>"表示无符号右移,也叫逻辑右移,

即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

正数: r = 20 >>> 2

    的结果与 r = 20 >> 2 相同;

负数: r = -20 >>> 2

注:以下数据类型默认为int 32位

  -20:源码:10000000 00000000 00000000 00010100

    反码:11111111  11111111   11111111   11101011

    补码:11111111  11111111   11111111   11101100

    右移:00111111  11111111   11111111   11111011

    结果:r = 1073741819

参考博客:https://blog.csdn.net/weixin_49782150/article/details/119146450文章来源地址https://www.toymoban.com/news/detail-736681.html

到了这里,关于简单记录下“<<”、“>>”和“>>>”的用法和区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java如何对接cahtgpt API(简单记录)

    springboot+mybatis-plus 通过java调用chatgpt API实现对话,将chatgpt生成的内容通过与前端建立websocket及时发送给前端,为加快chatgpt响应速度,采用exent/stream的方式进行,实现了逐字出现的效果 java对接chatgpt API 使用java原生的网络请求方式完成 在发送网络请求时,将\\\"stream\\\"设置为 tru

    2024年02月16日
    浏览(29)
  • Java算法 leetcode简单刷题记录4

    买卖股票的最佳时机: https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 笨办法: 记录当天的值及之后的最大值,相减得到利润; 所有的天都计算下,比较得到利润最大值; 会超时 记录过程中遇到的最低值,每当有利润大于0及大于上一个利润值的情况,赋值; 最小和分割:

    2024年01月23日
    浏览(34)
  • Java算法 leetcode简单刷题记录6

    环和杆: https://leetcode.cn/problems/rings-and-rods/ 统计范围内的元音字符串数: https://leetcode.cn/problems/count-the-number-of-vowel-strings-in-range/ 最长平衡子字符串: https://leetcode.cn/problems/find-the-longest-balanced-substring-of-a-binary-string/ K 个元素的最大和: https://leetcode.cn/problems/maximum-sum-with-exa

    2024年01月24日
    浏览(38)
  • typedef 和 # define 用法区别

    博主在牛客网上看到了一道有关typedef和# define题目。发现有很多初学的小伙伴对两者的用法不是特别清楚,所以博主在这总结以下相关用法和区别。 话不多说,先来看看原题吧!(答案c) #define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的替换,不作

    2024年02月08日
    浏览(31)
  • #Ts篇:符号`?.` 、`??` 、 `!` 、 `?: `的用法和区别

    ?. 定义 可选属性操作符 例如:obj?.prop。 如果 obj = null || undefined ==== undefined, 在上面的示例中, person1.age 和 person2.age 都可能为 undefined, 因为 age 属性是可选的。 而在访问 job.title 属性时,我们使用了可选属性访问操作符 ?. , 如果 person1.job 或 person2.job 为 null 或 undefined,

    2024年02月08日
    浏览(77)
  • wallbreaker用法记录

    plugin wallbreaker classsearch pattern 根据给的 pattern 对所有类名进行匹配,列出匹配到的所有类名。 搜索对象 plugin wallbreaker objectsearch classname 根据类名搜索内存中已经被创建的实例,列出 handle 和 toString() 的结果。 ClassDump plugin wallbreaker classdump classname [--fullname] 输出类的结构,

    2024年02月15日
    浏览(26)
  • Comparable和Comparator的用法和区别

    文章目录 前言 一 .Comparable 1.Comparable是什么? 2.comparable有用吗? 有用的话它有什么用? 没学compar之前的解决办法 :  2.在学习了comparable之后 二.comparator 1.comparator是什么? 2.comparator怎么用? 3.两者的差异 总结 在这里给大家整理了一下comparable和comparator的用法和区别,这些在以后代码

    2024年02月05日
    浏览(28)
  • Git 进阶 高级用法,重要命令记录

    本篇文章用于记录Git高级用法,新手可以看我的另一篇文章:Git基础教学。 Git git fetch 是git pull 的细分步骤,git pull 包含了git fetch git pull origin master 上述命令其实相当于git fetch + git merge 在实际使用中,git fetch更安全一些 因为在merge前,我们可以查看更新情况,然后再决定是否

    2024年03月15日
    浏览(48)
  • @Service和@Component注解的区别和用法

    @Service和@Component注解在Spring框架中都用于标注类,以便Spring容器能够自动识别并创建其实例。然而,这两个注解在用法和区别上却有着不同的目的和效果。本文将详细介绍这两个注解的用法和区别,并通过示例代码进行演示。 一、@Service注解 @Service注解是Spring框架中用于标注

    2024年02月06日
    浏览(32)
  • 浅谈postman和jmeter的用法与区别

    前阶段做了一个小调查,发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今天我们就来谈谈一大部分人在做的接口测试,小白变高手也许你只差这一次深入

    2024年01月24日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包