C语言入门---位操作

目录

1. 两个数不同的二进制位个数

 2.原码、反码、补码

3.不创建临时变量实现两个数的交换

4.求一个整数存储在内存中的二进制中1的个数

5. 特例-1

6.将指定的位置置1

 7.将指定位置置1

8.++a与a++

9.||与&&

10.逗号表达式

11.srand与rand

12.sizeof

 13.结构体初始化

 14.枚举初始化与赋值


1. 两个数不同的二进制位个数

#include<stdio.h>
int main()
{int a = 2022;int b = 1028;int c = a ^ b;int count = 0;while (c){c = c & (c - 1);count++;}printf("%d\n", count);return 0;
}

 

 2.原码、反码、补码

int main()
{/*首先写出两个数的补码,再按位与,再求出它的原码,按规定打印出来*/int a = 3;int b = -5;//00000000 00000000 00000000 00000011 -- 原码、反码、补码一样//10000000 00000000 00000000 00000101 -- 原码//11111111 11111111 11111111 11111010 -- 取反//11111111 11111111 11111111 11111011 -- 加1得补码//00000000 00000000 00000000 00000011 -- 3和-5的补码按位相与int c = a & b;printf("%d\n", c);//相与的结果以%d的形式打印,即打印一个有符号的整数//我们求出的是3和-5的补码按位与的结果存在了c里面//但我们需要打印它的原码//而c最高位是0,是正数,原码补码反码都一样,故打印3return 0;
}

        首先写出两个数的补码,再按位与,再求出它的原码,按规定打印出来

    printf("%d\n", c);//相与的结果以%d的形式打印,即打印一个有符号的整数
    //我们求出的是3和-5的补码按位与的结果存在了c里面
    //但我们需要打印它的原码
    //而c最高位是0,是正数,原码补码反码都一样,故打印3

3.不创建临时变量实现两个数的交换

        容易溢出:

    int a = 3;//0000 0011int b = 5;//0000 0101a = a + b;//a = 8b = a - b;//b = 3a = a - b;//a = 5

        采用异或:

    0^a = a;相同为0,不同为10000 0000 0000 00000000 0101 0111 1011 -- a0000 0101 0111 1011 -- a/*本来是0的还是0,本来是1的还是1*/a^a = 0;相同为0那么a^a^b = b异或支持交换律a^(a^b) = bb^(a^b) = a那么b^b^a = a0000 0110 -- a = a^b0000 0101 -- b 0000 0011 -- b = b^a0000 0110 -- a0000 0101 -- a = a^ba = a ^ b;//a = 3^5b = b ^ a;//b = 5^3^5 = 3a = a ^ b;//a = 3^5^3 = 5

4.求一个整数存储在内存中的二进制中1的个数

    int a = 31;int i = 0;int count = 0;for (i = 0; i < 32; i++){if (((a >> i) & 1) == 1){count++;}}printf("%d\n", count);

5. 特例-1

    int b = 0;printf("%d\n", ~b);//-1

规定了1111 1111 1111 1111 11111 1111 1111 1111为-1

6.将指定的位置置1

    //改变任意位int a = 5;//0000 0101//0000 0010//0000 0111 -- 7a |= (1 << 1);

以改变第1位为例:

        因为按位或,又一个规律,1|x = 1;0|x = x,那么与1相或如果是1还是1,如果是0还是1

 7.将指定位置置1

a &= ~(1 << 1);

8.++a与a++

	int main(){int c = 3;int d = c++;printf("%d %d\n", c, d);int m = 5;int n = ++m;printf("%d %d\n", m, n);int x = 10;printf("%d", x--);//先打印再--printf("\n");printf("%d", x);/*printf("\n");printf("%d", --x);*/return 0;}

	int x = 10;printf("%d", x--);//先打印再--printf("\n");printf("%d", x);

9.||与&&

    int i = 0, a = 1, b = 2, c = 3, d = 4;i = a++ || ++b || d++;因为a = 1先赋值给i,a = 1为真,故不会对b和d进行计算还是原本的值之后a进行自增,故打印的是2234printf("%d\n", i);printf("%d %d %d %d", a, b, c, d);int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ || ++b || d++;0为假,故会计算b,b先自增变成3为真,后面不计算int j = (a++ || ++b || d++);printf("%d\n", i);//1printf(" %d\n", j);//1printf("%d %d %d %d", a, b, c, d);//1334

10.逗号表达式

逗号表达式,整个表达式的结果是最后一个表达式的结果
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("%d\n", c);//13
printf("%d %d\n", a ,b);
}

11.srand与rand

#include<stdlib.h>
#include<time.h>int main()
{int i = 10;int j = 0;/*不加这句话每次都是打印相同的随机数*///srand((unsigned int)time(NULL));while (i--){j = (int)rand();printf("%d\n", j);}return 0;
}

12.sizeof

 13.结构体初始化

	typedef struct student {int grade;char name[10];int telenum[12];char age;char sex[10];}student;int main(){student Stu = { 1, };//这种初始化就是让第一个成员变量特殊赋值return 0;}

 14.枚举初始化与赋值

#define voice_max 100
typedef enum { DG, DN, UDG = 10, UDN } test;	注意test就是我这里给这个枚举类型自定义的一个新的类型名,类似与int,float等。
int main()
{//注意test就是我这里给这个枚举类型自定义的一个新的类型名,类似与int,float等。test b;//b = 2 //  注意此处虽然是对枚举变量赋值,赋的范围虽然也在枚举值范围内,但这是错的,因为你不能用数字直接对其进行赋值。 //	b = (test)2;  // 这样就可以了,加一个枚举类型的强制转换即可。//test b;b = UDG; //b是一个枚举变量,而UDG是一个枚举值常量,这样赋值就是正确的printf("%d", b);printf("%d", b);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统 选择题 期末试题 考研真题 + 参考答案

1.&#xff08;考研真题&#xff0c;单项选择题&#xff09;单道批处理系统的主要缺点是&#xff08; &#xff09;。 A. CPU利用率不高 B.失去了交互性 C.不具备并行性 D.以上都不是 【参考答案】A 【解析】单道批处理系统的内存中只有一道程序&#xff0c;当该程序…

Node——Node.js基础

对Node.js中的基础知识进行讲解&#xff0c;包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容&#xff0c;这些知识是学习Node.js应用开发的基础。 1、Node.js全局对象 全局&#xff0c;即程序中任何地方都可以使用&#xff0c;Node.js内…

【libGDX】加载G3DJ模型

1 前言 libGDX 提供了自己的 3D 格式模型文件&#xff0c;称为 G3D&#xff0c;包含 g3dj&#xff08;Json 格式&#xff09;和 g3db&#xff08;Binary 格式&#xff09;文件&#xff0c;官方介绍见 → importing-blender-models-in-libgdx。 对于 fbx 文件&#xff0c;libGDX…

python中的简单线性拟合

简单线性回归可以拟合线性关系的数据&#xff0c;一般使用一次函数或二次函数即可。 import numpy as np import matplotlib.pyplot as pltxnp.array([1,2,3,4,5,6,7,8,9,10]) ynp.array([2.5,4.5,4.8,5.5,6.0,7.0,7.8,8.0,9.0,10.0])#一次拟合函数 slope,interceptnp.polyfit…

不受平台限制,Sketch 网页版震撼登场

Sketch 是一种基于 Mac 的矢量图形编辑器&#xff0c;可用于数字设计。其主要功能包括无损矢量编辑、完美像素精度和数百个插件同步功能&#xff0c;可导出预设和代码。它是目前流行的页面交互协作设计工具。但是 Sketch 最大的缺点是对 Windows/PC 用户不友好。严格来说&#…

使用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色

-- 日、时、分、秒&#xff0c;这是计时的单位&#xff0c;惜时就应该惜日、惜时、惜分、惜秒。 用 Java 来读取 Excel 文件&#xff0c;检查每一行中的 URL&#xff0c;并将不符合条件的行标记为红色。以下是一个简单的示例&#xff0c;使用 Apache POI 进行 Excel 操作&#…

vue3+ts v-model 深度学习

<template><div><h1>我是App.vue组件</h1><div>isShpw:{{ isShow }}</div><div>text:{{ text }}</div><div><button click"isShow !isShow">开关</button></div><hr /><vModeVal…

在Matlab里安装gurobipy怎么安装教程

在Matlab 里安装gurobipy 先在CMD里激活&#xff0c; 然后添加系统环境变量 GRB_LICENSE_FILEC:\gurobi10.2\gurobi.lic 然后输入 addpath(D:\gurobi1003\win64\matlab) addpath(C:\gurobi1003\win64\matlab) addpath(C:\gurobi1002\win64\matlab) C:\gurobi1003\win64\m…

Excel如何比较两列数据的不同

当遇到exel有两个列表的数据&#xff0c;需要比较得到他们的不同的部分&#xff0c;并且得到一个不同的值的列表。示例如下&#xff1a; 目的是&#xff1a;通过比较&#xff0c;知道Column2的哪些值不在在Column1里。 WPS直接提供了这一个功能&#xff0c;如下图&#xff1a;…

【日常总结】Swagger 3.0 + 集成 knife4j ,并设置header入参

一、场景 环境&#xff1a; 二、问题 思路 &#xff1a; 三、解决方案 &#xff08;推荐&#xff09; Stage 1&#xff1a;接入knife4j 依赖 Stage 2&#xff1a;修改 yaml 配置 Stage 3&#xff1a;修改 swagger 3 配置文件 Stage 4&#xff1a;查看效果 Swagger UI …

python爬虫实习找工作练习测试(以下内容仅供参考学习)

要求&#xff1a;获取下图指定网站的指定数据 空气质量状况报告-中国环境监测总站 输入&#xff1a;用户输入下载时间范围&#xff0c;格式为2022-10 输出&#xff1a;将更新时间在2022年10月1日到31日之间的文件下载到本地目录&#xff08;可配置&#xff09;&#xff0c;并…

WordPress:构建强大的网站和博客的完美选择

WordPress&#xff1a;构建强大的网站和博客的完美选择 一、WordPress 简介1.1 WordPress 介绍1.2 WordPress 优势 二、部署LNMP环境2.1 前提条件2.2 关闭防火墙和SELinux2.3 安装Nginx2.4 安装MySQL2.5 安装PHP2.6 配置Nginx2.7 配置MySQL2.8 配置PHP2.9 测试访问LNMP平台 三、…

【vue_3】关于超链接的问题

1、需求2、修改前的代码3、修改之后&#xff08;1&#xff09;第一次&#xff08;2&#xff09;第二次&#xff08;3&#xff09;第三次&#xff08;4&#xff09;第四次&#xff08;5&#xff09;第五次 1、需求 需求&#xff1a;要给没有超链接的列表添加软超链接 2、修改前…

【密码学引论】分组密码

第三章 分组密码 DES、IDEA、AES、SM4 1、分组密码定义&#xff08;按照五个组成部分答&#xff09; 密钥空间&#xff1a;属于对称加密算法kekd明密文空间&#xff1a;将明文划分为m比特的组&#xff0c;每一块依次进行加密加解密算法&#xff1a;由key决定一个明文到密文的…

011 OpenCV warpAffine

目录 一、环境 二、warpAffine原理 三、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、warpAffine原理 warpAffine是OpenCV库中的一个函数&#xff0c;它用于执行二维仿射变换。这个函数接受一个输入图像和变换矩阵&…

二叉树的递归套路(1)

与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 是否平衡二叉树 &#x1f48e;总结 是否平衡二叉树 题目 给定一颗二叉树的头节点head&#xff0c;返回这颗二叉树是不是平衡二叉树 平衡二叉树就是这个树的所有子树和它自己&#xff0c;左右子树高度差不超过1 递归…

Rust语言入门教程(六) - 字符串类型

在Rust中&#xff0c; 字符串类型其实是一个比较复杂的话题。在Rust的标准库中&#xff0c;至少都提供了6种字符串类型&#xff0c;我们平常使用的最多的是其中的两种。这两种类型互相之间也有所关联&#xff1a; str&#xff1a; 字符串切片String 字符串 其中&#xff0c; 字…

Postman接口测试 —— 设置断言和集合运行

一、常见的5种断言方法 Postman是一款非常强大的API接口调式工具&#xff0c;它自带断言方法&#xff0c;不需要学习JavaScript脚本&#xff0c;非常方便。 &#xff08;1&#xff09;Status code&#xff1a;Code is 200(校验接口返回结果的状态码) &#xff08;2&#xff09…

python+feon有限元分析|求解实例

目录 1、feon框架结构 2. 支持的单元类型 3、实例 1、feon框架结构 包含三个包&#xff1a; sa&#xff1a;结构分析包 ffa&#xff1a;流体分析包 derivation&#xff1a;刚度矩阵包 2. 支持的单元类型 Spring1D11 - 一维弹簧单元 Spring2D11 - 二维弹簧单元 Spring…

MySQL运行在docker容器中会损失多少性能

前言 自从使用docker以来&#xff0c;就经常听说MySQL数据库最好别运行在容器中&#xff0c;性能会损失很多。一些之前没使用过容器的同事&#xff0c;对数据库运行在容器中也是忌讳莫深&#xff0c;甚至只要数据库跑在容器中出现性能问题时&#xff0c;首先就把问题推到容器上…