嵌入式开发笔记—关于>>和<<、&和&&和指针

2023-10-30

1、>>和<<

符号>>可以理解为除以2的几次方,例如a>>b相当于a除以2^b。相反,符号<<可以理解为乘2的几次方。

上面描述的只是它们的数字意义。

实际上>>为右移运算符,其运算规则为“符号位不变,左边补上符号位”,具体来说就是按照二进制的形式把所有数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,正数补0,负数补1。

<<为左移运算符,其运算规则为按照二进制的形式把所有数字向左移动对应的位数,低位补0。

2、&和&&

&:按位与,都为1时结果为1,否则结果为0。例如1011 & 1010 = 1110。
&&:逻辑与,a&&b,只有当a和b均为true时结果为true,否则结果为false。

3、指针赋值

指针是一种指向变量地址的变量,既可以指向一个普通变量,也可以指向结构体变量。
对指针进行赋值时,等号右边既可以是a,也可以是a。当等号右边是a时,则指向的是该地址所存放的数据。当等号右边是a时,则指向的是该地址。

#include<stdio.h>

int main()
{
    int i = 8;
    
    int* j = &i;   // j指向i的地址
    int* k = (int*)i;   // k等于变量i的值

    // 也可以写成如下形式
    // int* j;
    // int* k;
    // j = &i;
    // k = (int*)i;
    
	printf("j=%d\n",j);
	printf("\n");
	printf("k=%d\n",k);
	printf("\n");
	printf("&i=%d\n",&i);
	
	return 0;
}

运行结果如下:

运行结果
指针的类型决定了指针±整数时的步长

int* i = 0;   // 定义一个空指针i

上面定义了一个指针变量i,*(i + 1)实际上并非加1,因为i为int类型,所以加1实际上为加32。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式开发笔记—关于>>和<<、&和&&和指针 的相关文章

  • Win11蓝屏代码IRQL NOT LESS OR EQUAL的处理方法

    蓝屏错误IRQL NOT LESS OR EQUAL是用户常见的系统故障了 升级到Win11新系统也遇到了同样的问题 那么Win11蓝屏问题IRQL NOT LESS OR EQUAL要如何解决 下面就来看看小编整理的解决办法 什么是 IR
  • Java 8: 元空间(Metaspace)

    前言 很多开发者都在其系统中见过 java lang OutOfMemoryError PermGen space 这一问题 这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的 通常出现于代码热部署时 相对于正式产品 该问题在开发机
  • 解决报错:错误1130- Host xxx is not allowed to connect to this MariaDb server

    在云服务器上面搭建了MariaDb MariaDB是MySQL源代码的一个分支 但是远程链接不上 首先 你要确保服务器安全组3306端口已经开放 在确保端口开放的情况下 如果出现错误代码1130 Host xxx is not allowe
  • SuperPoint 论文详解

    SuperPoint 该论文是 magic leap 公司在18年的一篇工作 而且提供了代码 基于 pytorch 的 不过遗憾的是训练代码和相应的渲染的训练数据没提供 主要思路 本文提出了一个自监督的方式去训练网络来提取特征点以及计算描述
  • 【LoadRunner】解决LR11无法录制Chrome浏览器脚本问题

    LoadRunner 解决LR11无法录制Chrome浏览器脚本问题 LoadRunner录制脚本时 遇到高版本的IE FireFox 或者Chrome浏览器 会出现无法录制脚本的问题 下面就来讲一下如何利用LR自带的wplus init
  • tflearn anaconda 安装过程记录

    准备工作 gcc升级为4 8 2glibc升级为2 18 opt xxx xxx components ficlient bigdata env 里加入 export LD LIBRARY PATH usr local lib usr lo
  • SpringBoot调取OpenAi接口实现ChatGpt功能

    很高兴和大家分享我实现的一个小项目 利用 Spring Boot 实现了一个 ChatGpt 对话系统 在本文中 我将详细介绍这个项目的实现步骤 以及代码实现 什么是 ChatGpt ChatGpt 是一种基于 GPT 技术的对话系统 能够

随机推荐

  • 剑指offer45 把数组排成最小的数

    目录 题目链接 解法1 调用sort 解法2 冒泡排序的扩展 题目链接 链接 其实这道题 大概看完就知道是一个排序的问题 无非就是数组中的元素以一个合适的位置排好序 这样从头加到尾 组成的整体数字最小 题目中也暗示你排序问题了 个人捉摸了一
  • linux系统启动过程(方便记忆步骤&详细步骤)

    linux系统的启动过程 大致可以分为五个阶段 内核的引导 运行init 系统初始化 建立终端 用户登录系统 大致步骤 1 内核的引导 操作系统 gt boot 2 运行init 操作系统 gt boot gt init进程 配置文件 et
  • Wix toolset打包工具介绍

    Wix Toolset工具目前是windows平台应用打包比较好用的工具 最大的两个优点是功能全面和免费软件 下面来介绍一下这个软件 Wix Toolset官网 1 Wix的核心是一组build工具 Wix来生成windows安装包的理念跟
  • opencv学习笔记之十五——最小外接矩形(RotatedRect返回角度angle问题)

    最近在看一个车牌识别开源项目时 对其中RotatedRect的角度属性理解得不清楚 也查找了大量博客 得出了基本结论 最后通过实验进一步进行了验证 RotatedRect该类表示平面上的旋转矩形 有三个属性 矩形中心点 质心 边长 长和宽
  • 数据结构-1

    基本概念 数据 data 计算机中指的是能输入到计算机中并被计算机程序处理的符号的总称 比如 图像 声音等都可以在进行编码后被称为数据 再在计算机中进行处理 数据元素 data element 数据的基本单位 数据元素可由多个数据项 dat
  • Takeown、Cacls、Icacls-文件、文件夹夺权用法

    常用示例如下 takeown f 文件名 获取该文件的所属权 takeown f r d n 文件夹 获取整个文件夹及其下面子目录文件的所属权 takeown f a r d y 强制将当前目录下的所有文件及文件夹 子文件夹下的所有者更改为
  • 算法-DS证据理论

    适用领域 信息融合 条件 证据独立 特点 1 满足比贝叶斯理论更弱的条件 不必满足概率可加性 2 具有直接表达 不确定 和 不知道 的能力 这些信息保存在mass函数中 并在证据合成过程中保留了这些信息 3 证据理论不但允许人们将信度赋予假
  • 解决插入word文档中的图片变得不清晰问题

    打开文件 找到选项 打开高级 找到不压缩图片并勾选 确定并退出
  • saltstack安装

    ubuntu install 1 ppa install sudo add apt repository ppa saltstack salt sudo apt get update sudo apt get install salt ma
  • 字符串替换C++实现

    题目 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 思路 给定了字符串 和字符串最大长度 替换空格为 20 找出所有空格 计算新的长
  • vs 自定义 格式化代码快捷键

    vs 自定义 格式化代码快捷键 工具 选项 环境 键盘 编辑 设置选定内容的格式 全局 输入自己想要的快捷键 分配 确定
  • sysdba不能远程登录

    sysdba不能远程登录这个也是一个很常见的问题了 碰到这样的问题我们该如何解决呢 我们用sysdba登录的时候 用来管理我们的数据库实例 特别是有时候 服务器不再本台机器 这个就更是有必要了 当我们用sqlplus as sysdba 是
  • 怎么利用数据库做分布式共享锁

    一 适用环境 1 数据库集群模式 1主多从 2 单机数据库 3 数据库必须提供行级锁功能 二 原理 cas算法 代码 更新当前值为new updateCurrentValue id new old old 通过id 查到的值 new 期望的
  • 变量交换的四种方式

    可以使用以下方法对两个变量进行交换 方法一 定义一个中间量 define CRT SECURE NO WARNINGS include
  • VUE 项目文件夹上传下载解决方案

    原理 js将大文件分成多分 全部上传成功之后 调用合并接口合成文件 如果传输中断 下次上传的时候过滤掉已经上传成功的分片 将剩余的分片上传 成功之后合并文件 前置条件 获取uoloadId接口 用于标记分片 分片上传接口 合成文件接口 后端
  • matplotlib画图间隔范围等设置

    import matplotlib pyplot as plt from matplotlib pyplot import MultipleLocator 从pyplot导入MultipleLocator类 这个类用于设置刻度间隔 x va
  • Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程

    文章目录 Web抓包 火狐抓包 谷歌抓包 小技巧 结束 Web抓包 火狐抓包 环境需求 火狐浏览器 代理插件 1 打开测试工具BurpSuite 默认工具拦截功能是开启的 颜色较深 我们点击取消拦截 下图取消拦截状态 数据包可以自由通过 2
  • vue3.0中全局注册组件版本1-官方

    前言 在对vue3 0的使用和学习中 发现了很多和以前不一样的方法 这里聊一聊vue3 0中给我们提供的全局的注册组件方法 官方文档 入口 目录 具体方法介绍 1 前提 返回一个提供应用上下文的应用实例 应用实例挂载的整个组件树共享同一个上
  • iOS字典转成JSON换行符问题

    问题 使用系统框架将字典转成压缩转义后的JSON字符串 发现字符串中带有多个换行符 系统转JSON的方法如下 let json try JSONSerialization jsonObject with validData options
  • 嵌入式开发笔记—关于>>和<<、&和&&和指针

    1 gt gt 和 lt lt 符号 gt gt 可以理解为除以2的几次方 例如a gt gt b相当于a除以2 b 相反 符号 lt lt 可以理解为乘2的几次方 上面描述的只是它们的数字意义 实际上 gt gt 为右移运算符 其运算规则