2.操作符详解

1.10进制转二进制方法

所以125的二进制就是1111101

2.2进制转8进制:

从2进制序列中右边最低位开始向左每3个2进制位换算为一个8进制位,剩余不够3个2进制位的直接换算

例:01101011转为01 101 011

即1 5 3 

即8进制的153

还原回去的话:

将3化为011放最右边,5化为101放前者的左边,1化为1放前者的前边

3.而二进制转16进制:

从2进制序列中右边最低位开始向左每4个2进制位换算成一个8进制位,剩余不够4个2进制位的直接换算

例:01101011

化为0110 1011

即6b

还原回去的话:

将b化为1011放最右边,6化为110放前者的左边

4.有符号 的整形的二进制位最高位是符号位,其余是数值位

5.1个整形32个bit

6.原码除了符号位不变,其他位按位取反得到的是反码

7.原码取反(符号位不变)加 1,得到补码,补码取反(符号位不变)加一,得到原码

8.整数转化为补码存储入计算机,计算机内部对整形的操作都是基于补码进行的

9.移位操作符只能对整数进行操作

10.左移操作符:左边丢弃,右边补零(对补码进行操作,已核实) <<

11.右移操作符:(大多编译器都用的算术右移) >>

逻辑右移:左边用零补充,右边丢弃

算术右移:左边用原有的符号填充,右边丢弃

12.真正打印出来的还是原码

13.不要用移位操作符移动负数位

14.

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int main()
{int n = 10;printf("%d\n", n << 62);return 0;
}

这是标准未定义的,整形一共就32个bit

15.位操作符:&(按位与), |(按位或), ^(按位异或), ~(按位取反)

16.&&和 ||是逻辑操作符

17.位操作符的操作数必须是整数

18.& :

int c = a & b; 

二者的补码化合,

有 0则 0,全 1才 1(符号位也遵从),

存入C中

19.| :

int c = a | b;

二者的补码化合,

有 1则 1,全 0才 0(符号位也遵从),

存入C中

20.^ :

int c = a | b;

二者的补码化合,

同 0异 1(符号位也遵从),

存入C中

21.~ :

int a = 10;

int b = ~a;

得到的b是a的补码(符号位也是)按位取反得到的值

22.一道 面试 题:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>//不创建临时变量来交换两个整形变量的值
int main()
{int a = 10;int b = 20;//a ^ a == 0//0 ^ a == a//^ 服从交换律 a = a ^ b;b = a ^ b;a = a ^ b;printf("%d\n", a);printf("%d\n", b);return 0;
}

方法2:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>//不创建临时变量来交换两个变量的值
int main()
{int a = 10;int b = 20;a = a + b;b = a - b;a = a - b;printf("%d\n", a);printf("%d\n", b);return 0;
}

异或的方法不会有溢出的风险,但是效率低点

23.题

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int main()
{//求一个整数存储在内存中的二进制位1的个数//下列代码,负数也行int ret = -1;//scanf("%d", &ret);int i = 0;int n = 32;int count = 0;for (i = 0; i < n; i++){int tem = 0;tem = ret & 1;if (tem == 1){count++;}ret >>= 1;}printf("%d\n", count);return 0;
}

另一种方法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int my_count(unsigned int n)//此处传来的是-1的补码
{//从问题://得到一个十进制的整数中的每一位用方法:/ 10和% 10//处得到启发//得到一个十进制的整数中的每一位用方法:/ 2和% 2int count = 0;int i = 0;while (n != 0){if (n % 2 == 1){count++;}n = n / 2;}return count;
}
int main()
{//求一个整数存储在内存中的二进制位1的个数//下列代码,负数也行int count = my_count(-1);printf("%d", count);return 0;
}

另一个方法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int my_count(int n)
{int count = 0;while (n != 0){n = n & (n - 1);count++;}return count;
}
int main()
{//求一个整数存储在内存中的二进制位1的个数//下列代码,负数也行int count = my_count(10);printf("%d", count);return 0;
}

上边的那个题做一个知识的延伸:

判断一个数是否是2的次方数DA搜:

24.做题时,一开始想不到的话就先写出前几个数据以看规律

25.

00000000000000000000000000000100

通过 ~ 得到

11111111111111111111111111111011

26.

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int func(int m, int n,int t)
{int i = 0;if (t == 1){t = t << (n - 1);m = m | t;}else{t = -1;t = t & (t - 1);t = t << (n - 1);m = m & t;int tem = 1;//调回去int i = 0;for (i = 0; i < n - 1; i++){m = m | (tem << i);}}return m;}int main()
{//把一个数的某个二进制位制 0或制 1int m = 0;scanf("%d", &m);//数字int n = 0;scanf("%d", &n);//第几位int i = 0;for (i = 31;i >= 0 ; i--)//打印一个整数存储在内存中的二进制位{printf("%d ", (m >> i) & 1);}printf("\n");int e = func(m, n, 0);//第三个参数为要制为1还是0for (i = 31; i >= 0; i--)//打印一个整数存储在内存中的二进制位{printf("%d ", (e >> i) & 1);}return 0;
}

上述函数还是少了两个功能:不能制正数的0,不能制负数的1,要加上去的话无非就是要多加上两个条件而已

27.逗号表达式从右往左执行,拿到的是最后一个值.注:前边的表达式要都执行一遍

28.5也可以是操作数

29.sixeof是一个单目操作符

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

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

相关文章

使用PM2,在生产环境稳定运行你的node项目

PM2 一个 node&#xff0c;本身就用几行代码&#xff0c;就可以启动个 server 进程&#xff0c;监听个端口&#xff0c;为大家提供 Web 服务 一、依赖安装 npm install pm2 -g 二、命令行启动 普通执行启动 pm2 start <js 文件路径 >.js 携带参数启动 pm2 start < 某种…

【数学】整除与同余

基本概念 在数论中&#xff0c;整除不得不说是一种最为基础的知识了。 a a a 整除 b b b&#xff0c;记作 a ∣ b a|b a∣b 设 a , b ∈ Z a,b\in\Z a,b∈Z 且 b ≠ 0 b\ne 0 b0&#xff0c;则 b ∣ a b|a b∣a 当且仅当 ∃ q ∈ Z \exist q\in\Z ∃q∈Z 满足 q b …

re:Invent 云端历程:Swami Sivasubramanian 博士主题演讲-数据共生与开放

re:Invent 云端历程&#xff1a;Swami Sivasubramanian 博士主题演讲-数据共生与开放 亚马逊云科技 re:Invent 大会简介 亚马逊云科技 re:Invent 是亚马逊云科技为全球云计算社区举办的学习大会。是云计算领域的行业风向标&#xff0c;科技界的全球年度重磅盛会。 亚马逊云科…

Golang 领域驱动设计(DDD)最佳实践

Golang 领域驱动设计(DDD)最佳实践 Golang 领域驱动设计(DDD)最佳实践背景整体设计合理的创建标题,有助于目录的生成代码实现领域层什么是实体(Entity)?基础设施层数据对象表现层一些技巧检查结构体是否实现了某接口的防御代码适应于 Go Web 应用的错误处理对象拷贝Gol…

Docker笔记:简单部署 nodejs 项目和 golang 项目

docker 简单的维护 nodejs 项目容器 1 &#xff09;Nodejs 程序 const express require(express) const app express()app.get(/, (req, res) > {res.send(首页) })app.get(/news, (req, res) > {res.send(news) })// dokcer 做端口映射不要指定ip app.listen(3000)2…

爬虫学习日记第九篇(爬取seebug)

目标&#xff1a;https://www.seebug.org/vuldb/vulnerabilities 需求&#xff1a;爬取cve_id及影响组件 单线程 cookie是有时效的(过一段时间就不行了&#xff0c;大概半小时左右)&#xff0c;但是并不需要登录(直接抓包拿到的请求头) import base64 import json import ur…

vue 封装对象深拷贝方法

vue 封装对象深拷贝方法 在 src/ utils文件夹下面新建index.js // index.js// 深拷贝对象 export function deepClone(obj) {const _toString Object.prototype.toString// null, undefined, non-object, functionif (!obj || typeof obj ! object) {return obj}// DOM Nodei…

cuda version 管理

https://towardsdatascience.com/managing-multiple-cuda-versions-on-a-single-machine-a-comprehensive-guide-97db1b22acdchttps://towardsdatascience.com/managing-multiple-cuda-versions-on-a-single-machine-a-comprehensive-guide-97db1b22acdc不同项目设置不同的cuda…

Python网络编程基础:探索网络的未知领域

写在开头 在当今数字化时代&#xff0c;网络已经贯穿我们生活的方方面面&#xff0c;成为信息传递和交流的重要媒介。而Python&#xff0c;作为一门强大而灵活的编程语言&#xff0c;自然也在网络编程领域展现出其强大的一面。本文将带领读者进入Python网络编程的未知领域&…

小航助学2023年9月电子学会Scratch四级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 单选题3.00分 删除编辑附件图文 答案:A 第1题角色为一个紫色圆圈&#xff0c;运行程序后&#xff0c;舞台上的图案是&#xff1f;&#xff08; &#xff09; A…

Spring定时任务动态更改(增、删、改)Cron表达式方案实例详解

Spring定时任务动态更改&#xff08;增、删、改&#xff09;Cron表达式方案实例详解 最近在做一个需求&#xff0c;用户可以在平台上配置任务计划数据&#xff08;就是任务的执行和描述的相关信息&#xff0c;包括任务参数、cron表达式&#xff09;&#xff0c;配置后&#xf…

永久安装任何 IPA 文件:TrollStore 助你打破限制 | 开源日报 No.106

Azure/azure-quickstart-templates Stars: 13.4k License: MIT 这个项目是 Azure Resource Manager QuickStart Templates&#xff0c;它包含了社区贡献的所有当前可用的 Azure 资源管理器模板。维护着一个可搜索的模板索引&#xff0c;并提供如何使用或向该存储库做出贡献的…

12.12年末大促,退换货寄件5元起 !

促销新闻报道&#xff1a; 在双十二促销季&#xff0c;闪侠惠递携手圆通、申通、中通、京东、德邦推出了一系列寄件促销活动&#xff01;在这场活动中&#xff0c;退换货运费贵&#xff0c;你该怎么办&#xff1f;从今天开始&#xff0c;闪侠惠递和五大物流企业为您带来了一场…

Redis核心知识小结

基础 redis为什么快呢&#xff1f; 单线程基于io多路复用底层C语言对数据结构做了优化完全内存的操作 Redis6.0使用多线程是怎么回事? Redis不是说用单线程的吗&#xff1f;怎么6.0成了多线程的&#xff1f; Redis6.0的多线程是用多线程来处理数据的读写和协议解析&#x…

运筹优化 | 模拟退火求解旅行商问题 | Python实现

"""模拟退火旅行商""" import random import numpy as np import math import time import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False location np.loadtxt(city_location.t…

linux 调试工具 GDB 使用

gdb是linux下常用的代码调试工具&#xff0c;本文记录常用命令。 被调试的应用需要使用 -g 参数进行编译&#xff0c;如不确定可使用如下命令查看是否支持debug readelf -S filename | grep "debug" 启动调试 gdb binFile 例如要调试sshd&#xff1a; 调试带参数…

线性回归问题

目录 一、线性回归关键思想 1、线性模型 2、基础优化算法 二、线性回归的从零开始实现 1、生成数据集 2、读取数据集 3、初始化模型参数 4、定义模型 5、定义损失函数 6、定义优化算法 7、训练 三、线性回归的简洁实现 1、生成数据集 2、读取数据集 3、定义模型…

读这篇文章让你彻底了解Redis

我是Redis 你好&#xff0c;我是Redis&#xff0c;一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生&#xff0c;跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候&#xff0c;MySQL过的很辛苦&#xff0c;互联网发展的越来越快&#xff0c;它容纳的数…

学习笔记 -- CAN系统基础

一、CAN物理层 一个双节点CAN网络示意图如下&#xff0c;两颗120Ω终端电阻并联呈现总线电阻60Ω。 A、B两个节点的CAN收发器&#xff08;Transceiver&#xff09;&#xff0c;只负责电平转换。当总线静默时&#xff0c;收发器内部的2.5V电源经15KΩ电阻把CAN-H和CAN-L都拉到2.…

浅入研究 tcache_perthread_struct

Index 前情提要过程总结 前情提要 tcache_perthread_struct 是GLIBC从2.27开始引入的机制&#xff0c;本质就是链表。 最近我在复现CISCN往年题目&#xff0c;刚好想仔细研究研究劫持等的原理是什么&#xff0c;于是就研究了一会。 过程 找ChatGPT要了一段申请删除堆块的示例…