😄嘻嘻,朋友们,大家好!昨天我们学习了左移,今天我们来谈谈右移>>。
⭐️简单来说,右移就是将一个数二进制表达整体向右移动,也就是去掉一个数的二进制表达的末位,右移一位就去掉一位,右移两位就去掉两位。一般情况下右移就是除以2的幂并向下取整。
下面就让我们来详细看看吧!

文章目录
一、基础知识
✨右移运算符是一个二元运算符,右移操作是也一种位操作,用来将一个数的二进制表达的所有位向右移动指定的位数。
✨我们知道,无符号整数都是非负数,所以负数只出现在有符号整数中。(所以我们这里可以不分有符号整数和无符号整数):
对于正数,直接右移(左侧添0,可视为不添)对于负数,右移后左侧添1;0你懂的
1️⃣ 右移的二进制表示:
✨x>>y 表示将x的二进制表达向右移动y位(其中x和y都是整数)。
如:1001 >> 2 ----> 10 (直接去掉后两位)
2️⃣ 右移的执行结果:
✨右移操作相当于将一个数除以2的n次方。
x>>y <=> [ x 2 y \frac {x}{2^y} 2yx] ,方括号一般认为是向下取整。咦?不是常说右移是除以2,左移是乘以2吗,你这怎么还向下取整了呢?

👉因为不是所有的数都能被2整除,所以根据C语言右移的规则,应当向下取整。(C语言除法结果是正数则向下取整,结果为负数则向零取整)

- 所以上面的1001>>2 = [ 9 2 2 \frac {9}{2^2} 229] = [ 9 4 \frac {9}{4} 49] = 2(向下取整)
代码如下:
#include<stdio.h>
int main(void)
{
int a = 0b1001;
unsigned int b = a ;
printf("%d\n", a>>2);
printf("%u\n", b>>2);
return 0;
}
执行结果如下:
3793


】&spm=1001.2101.3001.11974&articleId=132524154&d=1&t=3&u=ccaabdf53f6f4ae7a52ca18b0464bc20)

被折叠的 条评论
为什么被折叠?



