• 有符号数移位


    在左移位中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。
    但是,右移位操作存在一个左移位操作不曾面临的问题:从左边移入的位,可以选择两种方案。
    一种是逻辑移位,左边移入的位用0填充
    一种是算数移位,左边移入的位由原先该值的符号位决定符号位为1则移入的位均为1,符号位为0则移入的为均为0
    这样就能够保持原数的正负形式不变。

    比如 值10010110,
    逻辑右移两位:00100101
    算数右移移位:11100101

    算数左移和逻辑左移是相同的,都是右边多出来的填充0(需要主要不要溢出),它们只在右移时不同,而只有当操作数是负数时才不一样。

    为什么说使用了有符号数右移操作,就不可移植了?

    标准说明无符号值的所有移位操作是采用逻辑移位,但对于有符号值,到底时采用逻辑移位还是算数移位取决与编译器,不能保证所有的编译器采用同样的方式。因此,一个程序如果使用的有符号的右移位操作,它是不可移植的。

    懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
  • 相关阅读:
    sql server中sql语句中单引号怎么转义?【转】
    如何配置Eclipse+Tomcat 开发环境【转】
    JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】
    P1955 [NOI2015]程序自动分析 && 离散化学习 && lower_bound学习
    P1604 B进制星球
    [OI
    [OI
    Aiyi's Code Style for OI
    POJ1186 方程的解数
    [Daily Life]百首好歌
  • 原文地址:https://www.cnblogs.com/Rainingday/p/14611794.html
Copyright © 2020-2023  润新知