C 移位运算

C 移位运算移位运算分为左移 lt lt 与右移 gt gt 包含逻辑移位 logicalshift 和算术移位 arithmeticsh 二者区别如下 1 逻辑移位 移出去的位丢弃 空缺位 vacantbit 用 0 填充 2 算术移位 移出去的位丢弃 空缺位 vacantbit 用符号位来填充 移位算只能作用于整数 不能作用于浮点数 对于无符号整数与有符号整数 左移

以补码 0x 来演示左移、逻辑右移与算术右移。

注意, 对于无符号整数,右移必须是逻辑右移。而对于有符号整数,C 语言标准并没有明确定义应该使用哪种类型的右移,但几乎所有的编译器均采用算术右移。

参考如下示例:

// //@file: main.c // #include <stdio.h> #include <stdint.h> int main() { int a = -1; printf("a=0x%x\n", a); //a=0xffffffff printf("a<<1=0x%x\n", a<<1); //左移,结果为 0xfffffffe printf("a>>2=0x%x\n", a>>2); //算术右移,结果为 0xffffffff unsigned int b=1; printf("b=0x%08x\n", b); //b=0x00000001 printf("b<<1=0x%08x\n", b<<1); //左移,结果为 0x00000002 printf("b>>1=0x%08x\n", b>>1); //逻辑右移,结果为 0x00000000 } 

编译输出结果:

gcc main.c ./a.out a=0xffffffff a<<1=0xfffffffe a>>2=0xffffffff b=0x00000001 b<<1=0x00000002 b>>1=0x00000000 

参考文献

[1] 龚奕利,贺莲译.深入理解计算机系统[M].北京:机械工业出版社,2016-11.C2.1.9 C语言中的移位运算.P40-41

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232143.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SqlSessionTemplate源码解析「建议收藏」

    SqlSessionTemplate源码解析「建议收藏」简介SqlSessionTemplate是mybatis-spring中最核心的一个类,我们知道MyBatis暴露出的最外层接口是SqlSession,所有的操作都是借助SqlSession接口的方法来完成的。MyBatis本身有一个默认实现类,也是我们在单独使用MyBatis时最常见的一个实现类DefalutSqlSession。而当我们将MyBatis与Spring整合时,便不再使用这个默认…

    2022年5月31日
    40
  • 学习vb语言「建议收藏」

    学习vb语言「建议收藏」第一天:昨天完成了安装vb环境今天大概了解了一下vb语言的一些语法,但是把所学的整理出来,一时间却又不知道如何整理。换一个方式,我来看看接下来要学什么。1.vb变量的作用域2.常用的内部函数3.数据的输入和输出4.常用的标准控件5.vb结构控制6.键盘过程7.菜单和对话栏8.数据文件学习这些的基础是今天所学的或者所了解到的1.建立一个vb程序的大致流…

    2022年6月21日
    26
  • endnote修改参考文献格式为方括号(参考文献)

    Endnote修改参考文献格式1将参考文献除编号外的内容设置左对齐:1)菜单栏Edit-Outputstyles-选择一个要更改的参考文献格式进行更改2)弹出页面内选中Bibliography下的Layout![右上角Incertfield位置添加tab,右下角HangingIndent位置选择Allparagraphy]3)在word中endnote下点击箭头处更改缩进大小最终结果如图…

    2022年4月10日
    3.8K
  • MVC3和MVC4中CRUD操作

    MVC3和MVC4中CRUD操作

    2022年1月23日
    48
  • 数据库系统及应用实验与课程设计指导(图书管理系统c++课程设计)

    一、系统平台开发工具:EclipsejavaMars数据库MySQLserver,Navicat可视化工具操作系统:win10百度云链接:https://pan.baidu.com/s/1SIWR75NRIh8sSL0oV7uZgA提取码:4y44二、数据库规划1.任务陈述:图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员…

    2022年4月18日
    43
  • UART 接口测试「建议收藏」

    UART 接口测试「建议收藏」串口UART测试程序带传参波特率、奇偶校验、停止位、数据位#include<stdio.h>#include<stdlib.h>#include<string.h>#include<pthread.h>#include<fcntl.h>#include<errno.h>#include<std…

    2025年11月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号