c语言中的移位运算符是什么,c语言中的位移动运算符用法

c语言中的移位运算符是什么,c语言中的位移动运算符用法,c语言中的移位运算符

本文主要介绍了C语言中的移位运算符,通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。

C语言中提供了两个移位运算符:

左移运算符:

右移位运算符:

左移运算符()

int main(void)

{

int a=4;

//将A的二进制位向左移动1位

int b=a 1;

printf('b=%d ',b);

返回0;

}

在32-8位操作系统中,int类型占用4个字节,1个字节有8位,所以变量A在内存中占用32位。

将4赋给变量A,4的二进制形式存储在A中。

将A向左移动一位。

0的最高位被丢弃,最后一位用0填充。

可以看到,A左移一位的结果是1000,换算成十进制就是8,所以打印B的结果是8。

右移运算符()

int main(void)

{

int a=10

//将A的二进制位向右移动1位

int b=a 1;

printf('b=%d ',b);

返回0;

}

给变量A赋值10,用二进制形式表示10。

将10向右移动一位,并丢弃最低位的0。

最高位补码0

转换成十进制的最终结果是5。

我们可以看到,打印B的最终结果确实是5。

这里需要注意的是,右移分为算术右移和逻辑右移。

算数右移:右侧丢弃,左侧用原符号位填充。

逻辑右移:右边丢弃,左边加0。

当二进制序列存储在存储器中时,最高位0表示正数,最高位1表示负数。

因为10是正数,所以不管是算术右移还是逻辑右移,最高位都是零。那么这里的右移运算是算术右移还是逻辑右移呢?

整数的二进制表示形式有三种:原码、反码、补码

原码:直接按照数值书写的二进制序列。

逆码:原码的符号位不变,其他位逐位反转。

补码:补码加1。

计算机内存值的存储方式是补码。

int main(void)

{

int a=-1;

//将A的二进制位向右移动1位

int b=a 1;

printf('b=%d ',b);

返回0;

}

以-1为例

-1的原始代码:

-1的倒数:

-1的补码:

因为补码存储在计算机中,-1右移1位,最低位1丢弃。

我们先来看看b的打印结果。

b的值为-1,表示最高补码为1。此时,执行算术右移。

需要注意的是,虽然A向右移动了,但是A的值并没有改变,我们也可以打印A。

int main(void)

{

int a=10

//将A的二进制位向右移动1位

int b=a 1;

printf('a=%d\n ',a);

printf('b=%d ',b);

返回0;

}

A的结果还是10。

int a=10

int b=a 1;

它与上面的代码相同。当执行移位操作时,被移位对象的值不会改变。

这就是这篇关于C语言中移位操作符的文章。有关C语言中移位运算符的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: