专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

c语言移位运算符怎么用,c语言移位操作

来源:小易整编  作者:小易  发布时间:2023-03-28 05:22
摘要:c语言移位运算符怎么用,c语言移位操作C的移位位运算符。移位运算符向左或向右移动位。1.左移:...
c语言移位运算符怎么用,c语言移位操作
C的移位位运算符。移位运算符向左或向右移动位。
1.左移:<<
左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算对象指定的位数。
左侧运算对象移出左末端位的值丢失,用0填充空出的位置.
下面例子中,每一位都向左移动两个位置:

(10001010)  << 2  //表达式    (00101000)  << 2  //结果值

c语言移位运算符怎么用,c语言移位操作

该操作产生了一个新的位值,但是不改变其运算对象。例如,假设stonk为1,那么stonk << 2为4,但是stonk本身不变,仍为1。
可以使用左移赋值运算符(<<=)来更改变量的值。
该运算符将变量中的位向左移动其右侧运算对象给定值的位数,如下例:

int stonk = 1;int onkoo;onkoo = stonk << 2;  /* 把4赋值给onkoo */stonk <<= 2;  /* 把stonk的值改为4 */

2.右移:>>
 右移运算符,将其左侧运算对象每一位的值向右移动其右侧运算对象指定的位数。
左侧运算对象移出右末端位的值丢失。
对于无符号类型,用零填充空出的位置;对于有符号类型,其结果取决于机器。
空出的位置可用0填充,或者用符号位(即最左端的位)的副本填充:

(10001010)>> 2    //表达式,有符号值(00100010)           //在某些系统中的结果值(10001010)>> 2    //表达式,有符号值(11100010)           //在另一些系统上的结果值

下面是无符号值的例子:

(10001010)>> 2    //表达式,无符号值(00100010)           //所有系统都得到该结果值

每个位向右移动两个位置,空出的位用0填充。
右移赋值运算符(>>=)其左侧的变量向右移动指定数量的位数,如下所示:

int sweet = 16;       //二进制值为:0001 0000   int ooosw;ooosw = sweet >> 3;   // 右移三位2进制值W为:0000 0010, 十进制ooosw = 2,sweet的值仍然为16sweet >>=3;           //sweet的值为2    ‘>>=’是右移赋值运算符

3.用法:移位运算符
移位运算符针对2的幂提供快速有效的乘法和除法:

number << n      num乘以2的n次幂number >> n     如果number为非负,则用number除以2的n次幂

这些移位运算符,类似于在10进制中,移动小数点来乘以10或除以10。
移位预算符还可以用于较大单元中提取一些位。例如用一个unsigned long类型的值表示颜色值,低阶位字节存储红色的强度,下一个字节存储绿色的强度,第3个字节存储蓝色的强度。
随后你希望把每种颜色的强度分别存储在3个不同的类型的变量中,那么可以使用你下面的语句:

#define BYTE_MASK 0xffunsigned long color = 0x002a162f;unsigned char blue, green, red;red = color & BYTE_MASK;green = (color >> 8) & BYTE_MASK;blue = (color >> 16) & BYTE_MASK;

以上代码中使用右移运算符,将8位颜色值移动至低阶字节,然后使用掩码技术把低阶字节赋值给指定的变量。

本文地址:百科问答频道 https://www.neebe.cn/wenda/942833.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • C语言while语句的用法

    C语言while语句的用法

    while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体。#includeintmain(void){inti,sum=0;i=1;while(i...

  • c语言移位运算符怎么用,c语言移位操作

    c语言移位运算符怎么用,c语言移位操作

    c语言移位运算符怎么用,c语言移位操作C的移位位运算符。移位运算符向左或向右移动位。1.左移:<<左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算对象指定的位数。左侧运算对象移出左末端位的值丢失,用0填充空出的位置.下面例子中...

  • while循环用法,C语言中while循环用法

    while循环用法,C语言中while循环用法

    while循环用法,C语言中while循环用法-While循环1、While循环结构与for循环不同,While循环没有初始化和更新部分的for循环,它只有测试条件和循环体;while(test-condition) body2、类型别名...

  • strcpy函数怎么用,C语言strcpy函数的使用

    strcpy函数怎么用,C语言strcpy函数的使用

    strcpy函数怎么用,C语言strcpy函数的使用strcpy简单使用: #include#includestructStudent{ intsid; charname[20]; intage;}st; //此处分号不可省略intmain...

  • scanf在C语言中的作用,scanf函数用法

    scanf在C语言中的作用,scanf函数用法

    scanf在C语言中的作用,scanf函数用法如果你想让自己的输入更加炫酷、更加个性化、更加安全,那么还需要学习scanf()的高级用法,这才是大神和菜鸟的分水岭。好了,言归正传,我们分三个方面讲解scanf()的高级用法。1)指定读取长度...

  • sscanf函数用法,C语言中sscanf函数6种用法详解

    sscanf函数用法,C语言中sscanf函数6种用法详解

    sscanf函数用法,C语言中sscanf函数6种用法详解sscanf()函数实现:不管接触过任何编程语言也好,学过正则表达式的都对sscanf()的使用并不陌生了。如何通过sscanf将已知的字符串通过格式化匹配出有效的信息?下面我把要实...

  • strcat函数怎么用,C语言strcat函数用法

    strcat函数怎么用,C语言strcat函数用法

    strcat函数怎么用,C语言strcat函数用法strcat()是追加字符串的函数。strcat(char[]a,char[]b)即将第二个字符串追加到第一个字符串末尾,第二个字符串值不变,第一个变长。追加时需要保证第一个字符串在加上第二...

  • while语句怎么用,C语言while语句用法

    while语句怎么用,C语言while语句用法

    while语句怎么用,C语言while语句用法一、语句格式:while(条件表达式) 语句1;while(条件表达式) { 语句1; 语句2; 语句3; 语句…; }二、与for循环的比较:一般的,对于可以确定循环次数的问题,我们采...

  • 周排行
  • 月排行
  • 年排行

精彩推荐