zoukankan      html  css  js  c++  java
  • 逻辑右移函数 srl()与算术右移函数 sra() (转)

     

    比如一个有符号位的8位二进制数11001101,逻辑右移就不管符号位,如果移一位就变成01100110。算术右移要管符号位,右移一位变成10100110。

    逻辑左移=算数左移,右边统一添0

    逻辑右移,左边统一添0

    算数右移,左边添加的数和符号有关

    附上代码:

    int sra(int x, int k)
    {
        int xsrl = (unsigned) x >> k;
        int w = sizeof(int) << 3;
        return xsrl |= (-1 << (w-k));
    } 
    unsigned srl(unsigned x, int k)
    {
        unsigned xsra = (int) x >> k;
        int w = sizeof(int) << 3;
        return xsra &= ~(-1 << (w - k));
    }

    e.g:1010101010,其中[]位是添加的数字

    逻辑左移一位:010101010[0]

    算数左移一位:010101010[0]

    逻辑右移一位:[0]101010101

    算数右移一位:[1]101010101

    rebooting...
  • 相关阅读:
    增加网站内容步骤
    简单使用
    dedecms的讲解 要求
    shop34-3-自动加载实现
    shop34-2-运转-平台分发
    shop34-1-目录布局
    match_controller
    match_model
    match_mvc
    laravel 路由
  • 原文地址:https://www.cnblogs.com/hutiann/p/5732275.html
Copyright © 2011-2022 走看看