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;当该程序…

JVM字节码- long/double类型的比较

在 Java 虚拟机&#xff08;JVM&#xff09;字节码中&#xff0c;对于 double 和 long 类型的比较&#xff0c;没有直接等价于 iflt&#xff08;用于整型比较&#xff09;这样的指令。相反&#xff0c;比较 double 和 long 类型的值涉及到一些不同的步骤和指令。下面是如何在 J…

Node——Node.js基础

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

华为OD机试 - 分月饼(Java JS Python C)

题目描述 中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个, 单人分到最多月饼的个数是 Max1 ,单人分到第二多月饼个数是 Max2 ,Max1 - Max2 ≤ 3 ,单人分到第 n - 1 多月饼个数是 Max(n-1),单人分到第n多月饼个数是 Max(n)…

【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…

大语言模型的好坏是由您提示水平高底决定的

大语言模型是有"嫌贫爱富“特点的&#xff0c;当你的水平高于大语言模型时它常常可以帮你&#xff0c;当你的水平低于大语言模型时它往往会骗你。 这主要是因为大语言模型在处理文本时具有较强的生成能力&#xff0c;可以根据已有的语境生成合乎逻辑的文本。当你的水平高于…

手机充电 显示连接耳机 (充电没外放声音) 并且充电速度很慢

现象 手机插入充电线充电 外放消失 按音量调节键 显示正在调节耳机音量 手机充电快充标识丢失 显示现在不是快充 充电速度很慢,边玩边用半小时不到2% 经测试:快充正常应该是20w,现在只有3w. 结论 排查后发现是数据线坏了,扔掉后随便换了根c2c的雷电线发现充电速度正常,不…

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

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

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

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

从零开始学习typescript——流程控制

前言 默认情况下&#xff0c;所有的代码都是从上到下&#xff0c;从左到右顺序执行的。 #mermaid-svg-zf9e2mz73WPBbIzH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zf9e2mz73WPBbIzH .error-icon{fill:#552222…

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平台 三、…

Java中的spring——面试题+答案(Spring框架)——第19期

当涉及到Spring框架的面试时&#xff0c;深入理解Spring的各个方面是至关重要的。 Spring IoC 和 DI Spring的IoC是什么&#xff1f; 答案&#xff1a; 控制反转&#xff08;IoC&#xff09;是一种设计模式&#xff0c;它将对象的创建和依赖关系的管理从应用程序代码中移到容器…

【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决定一个明文到密文的…