计算机表示数字正负不是用+ -加减号来表示,而是用最高位数字来表示,0表示正,1表示负

有符号右移

若正数,高位补0,负数,高位补1 -> 一句话概括:高位补符号位

  1. 正数
    例如:8 >> 2
    偶数情况
    8的二进制为 0000 0000 0000 0000 0000 0000 0000 1000
    右移两位后 0000 0000 0000 0000 0000 0000 0000 0010
    结果为2,右移n位8/(2^n)

    如果是奇数呢
    9的二进制为 0000 0000 0000 0000 0000 0000 0000 1111
    右移两位后 0000 0000 0000 0000 0000 0000 0000 0011
    结果为3,右移n位近似等于9/(2^n)

  2. 负数
    -8的二进制为 1000 0000 0000 0000 0000 0000 0000 1000(原码)
    然后写出补码 1111 1111 1111 1111 1111 1111 1111 1000(补码)
    计算补码的方式为反码+1,用一句话概括就是:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)
    右移两位后 1111 1111 1111 1111 1111 1111 1111 1110(补码)
    1111 1111 1111 1111 1111 1111 1111 1111(补码+1)
    1000 0000 0000 0000 0000 0000 0000 0000(补码+1取反)
    根据补码写出原码才是我们所求的结果, 保留符号位,然后按位取反再加上1
    1000 0000 0000 0000 0000 0000 0000 0010(补码的补码,即原码)
    结果为:-2

无符号右移

不论正负,高位均补0

  1. 正数:
    例如8 >>> 2
    与8 >> 2的运算相同,结果也为1

  2. 负数:
    例如-8 >>> 2
    首先写出-8的二进制数,因为是负数所以最高位为1
    1000 0000 0000 0000 0000 0000 0000 1000

    然后写出-8补码:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)

    1111 1111 1111 1111 1111 1111 1111 1111 1000(补码)

    右移2位: 在高位补0

    0011 1111 1111 1111 1111 1111 1111 1111 1110

    结果为:即1073741822

有符号右移和无符号右移相关推荐

  1. 分析轮子(二)- ,, (左移、右移、无符号右移)

    前言:写 分析轮子(一)-ArrayList.java 的时候看到源码中有 int newCapacity = oldCapacity + (oldCapacity >> 1); 这样的代 ...

  2. 通过原码、反码、补码彻底搞清左移、右移、无符号右移

    文章目录 原码.反码.补码 有符号右移>> 无符号右移>>> 有符号左移<< 总结有无符号 原码.反码.补码 正数 正数的原码.反码.补码都是该数字的二进制表 ...

  3. Java负整数的左移、右移、无符号右移

    Java负整数的左移.右移.无符号右移.正数的位移没有涉及到符号,而且正数的原码.反码.补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆. Java的<<  >> ...

  4. [转载]C++ 中有符号类型到无符号类型的转换(C和C++程序员面试秘笈P9面试题6)...

    本文复制自https://blog.csdn.net/abnerwang2014/article/details/20656423,是为了自己以后查看方便才复制过来的,谢谢原博主. 为了更好地解释下面 ...

  5. 负数时的有符号整型和无符号整型的转换

    目录 一.补码 二.负数时的有符号整型和无符号整型的转换 三.关于无符号的笔试题 一.补码 有符号数在计算机中存储,用数的最高位存放符号, 正数为0, 负数为1 例如:有符号数 1000 0011,其 ...

  6. 有符号拓展:signed-extending无符号拓展:unsigned-extending

    符号拓展 拓展意义 举个栗子 有符号拓展:signed-extending&无符号拓展:unsigned-extending 拓展意义 符号拓展的意义是产生位数拓展,数值不变的的结果.常见于不 ...

  7. C语言 有符号类型转换为无符号类型

    C语言中变量的类型变换比较多,有些地方需要时刻注意,不然很可能写出带有bug的代码并深埋入系统,难以察觉. 例如 有符号类型和无符号类型运算,有符号类型转换为无符号类型. 需要注意的有两种情况: 1. ...

  8. C语言中无符号整型变量赋值负数,负数时的有符号整型和无符号整型的转换

    目录 一.补码 二.负数时的有符号整型和无符号整型的转换 三.关于无符号的笔试题 一.补码 有符号数在计算机中存储,用数的最高位存放符号, 正数为0, 负数为1 例如:有符号数 1000 0011,其 ...

  9. 【汇编优化系列】关于符号扩展和无符号扩展(包括mips msa实现)

    DATE: 2021.11.26 文章目录 前言 1.参考 2.符号扩展和无符号扩展 含义 3.举例说明 4.mips msa相关指令 前言 在mips msa intrinsic工程优化过程中,遇到 ...

  10. C++有符号整型和无符号整型的区别

    C++有符号整型和无符号整型的区别 C++中的整型分为有符号类型整型和无符号类型整型,区别如下. 在有符号类型中:最左边的位是符号位,余下的位是数值位.符号位为1,代表负数:符号位为0,则为正数.例如 ...

最新文章

  1. Py之utils:utils库的简介、安装、使用方法之详细攻略
  2. MONTH_NAMES_GET
  3. koreader下载_koreader下载_koreader安装_koreader最新版_koreader安卓版下载_koreader app_易玩网...
  4. MySQL【案例讲解】单行函数
  5. Angular应用的依赖注入调试
  6. 研究生开题报告需要注意的几点
  7. 【Python数据结构】——二叉查找树(查找、构建、删除、插入、打印)
  8. 顽强奋斗的FreeEIM
  9. 关于arp.exe的一点应用
  10. nsga2代码解读python_代码资料
  11. input输入框只能输入正整数
  12. Networking UVALive - 2515 (最小生成树,适合kruskal)
  13. pycharm 激活相关
  14. 建立完善的日期定义表
  15. 计算机笔记检讨,上课没做笔记的反省检讨书范文550字
  16. 数据结构与算法 入门 与 排序
  17. iPhone媒体服务器修改,出现Apple媒体服务条款与条件已更改是怎么回事如何解决...
  18. STM32常用的开发工具有哪些?
  19. 图像处理:高斯滤波算法
  20. 一次真实的应急响应案例(Centos)——暴力破解、替换ps命令、留多个后门——事件复现(含靶场环境)

热门文章

  1. 中国的计算机网络技术学校,计算机系网络营销学校,计算机网络技术有哪些专科学校...
  2. 专利 | 一种基于脑电神经反馈控制智能机器人的方法
  3. 课题五 数控镗铣削加工工艺分析
  4. 关于建造的逻辑: BIM和VDC
  5. ON1 Effects 2018 for Mac 12.1.1 照片滤镜 摄影特效 破解版下载
  6. [附源码]SSM计算机毕业设计网上宠物商店JAVA
  7. 中国三维传感器市场趋势报告、技术动态创新及市场预测
  8. 被脱裤也不怕,密码安全可以这样保障
  9. 2022年R2移动式压力容器充装考试模拟100题及答案
  10. 超实用的Mac使用小技巧