美文网首页
计算机基础知识点(二)、移位运算

计算机基础知识点(二)、移位运算

作者: 溪浣双鲤 | 来源:发表于2020-06-18 18:54 被阅读0次

移位运算符:左移运算符<<、右移运算符>>

左移运算符<<按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

右移运算符>>按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

C语言移位运算只针对于整数。

下面以一个C函数举例

int wordAgliment(int x) {
    return (x+7) >> 3 << 3;
}

分析一下这个函数

当输入 x = 5   
x+7 = 12
12 用二进制表示为
0000 1100
右移三位变成
0000 0001
再左移三位变成
0000 1000
这个函数的结果为 8
即:输入x=5,得到的值为8

同理:

x=15,
x+7 = 22
22用二进制表示为:
0001 0110
右移三位变成
0000 0010
再左移三位变成
0001 0000
这个函数的运行结果为 16
即:输入的x=15,得到的值为16

可以总结一下规律:

一个数k为2的m次方,输入一个x,经过下面的移位运算得到的结果是对x进行向上取整为k的整数倍。
(x+ k-1) >> m << m

举例验证

如果k=8,k-1=7,8是2的3次方,即m=3,即得到

(x+7) >> 3 << 3

输入的x经过这种位移处理后的,会向上取8的倍数,例如输入5 ——> 结果取8,输入15 ——> 结果取16

如果k=16,k-1=15,16是2的4次方,即m=4,即得到

(x+15) >> 4 << 4

输入的x经过这种位移处理后的,会向上取16的倍数,例如输入5 ——> 结果取16,输入22 ——> 结果取32

溪浣双鲤的技术摸爬滚打之路

相关文章

  • 计算机基础知识点(二)、移位运算

    移位运算符:左移运算符<<、右移运算符>> 左移运算符<<按二进制形式把所有的数字向左移动对应的位数,高位移出(舍...

  • Java学习目录

    基础 Java 比较器Comparator和Comparable的使用和区别 进制、移位 Java 移位运算详解(...

  • 17.位运算基础及实战要点

    17.位运算基础及实战要点 位运算符 算数移位与逻辑移位 位运算的应用 为什么需要位运算 机器里的数字表示方式和存...

  • 常见位运算及技巧

    移位运算 移位运算包含逻辑移位(logical shif) 和 算术移位(arithmetic shift)。 逻...

  • 移位运算符

    移位运算符 简介:移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移...

  • 2018-04-24 JAVA 移位运算符

    移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。有三种移位运算符 (<<,>>,>>>...

  • 位运算(1) -- 移位

    位运算是二进制数的各种操作的统称, 本篇是移位操作. 计算机中的位运算操作都是以其补码参与运算 正数的三码(原码/...

  • Java的位运算符详解实例

    1.与(&)、或(|)、非(~)、异或(^) 2.移位运算符 移位运算符操作的对象就是二进制的位,可以单独用移位运...

  • MeasureSpec中的按位运算符、移位运算符讲解(左位移、与

    我们先看下基础知识 好了,下面看MeasureSpec中的按位运算、移位运算: android经常会有类似如图,(...

  • 计算机基础二进制补码与移位运算

    最近学习C,感觉C确实比较接近底层,要多了解计算机基础,这一门语言就一定不能错过了,因为许多知识都从这里延伸出来。...

网友评论

      本文标题:计算机基础知识点(二)、移位运算

      本文链接:https://www.haomeiwen.com/subject/vpqpxktx.html