zoukankan      html  css  js  c++  java
  • 有符号数移位

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

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

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

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

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

    懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
  • 相关阅读:
    外部排序
    oceanbase tpcc 关键总结
    TPCC测试
    最简单的oracle 19c安装教程
    unix进程环境
    tars以docker方式安装
    异常安全的赋值运算符函数
    linux 定时器setitimer使用
    libevent学习-reactor设计模式及代码示例
    linux中可执行程序搜索动态链接库的顺序
  • 原文地址:https://www.cnblogs.com/Rainingday/p/14611794.html
Copyright © 2011-2022 走看看