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 < 某种…

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

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

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

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

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…

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

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

永久安装任何 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要了一段申请删除堆块的示例…

六:Day05_Spring Security01

一、Spring Security引入 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制&#xff08;认证和授权&#xff09;框架。它是保护基于 Spring 应用程序的事实标准。 2. 认证授权 认证授权实现平台所有用户的身份认证与用户授权功能。 2.1 什么是用户认证 认证…

关于pytorch中的dim的理解

今天碰到一个代码看起来很简单&#xff0c;但是细究原理又感觉好像不太通不太对劲&#xff0c;就是多维tensor数据的操作&#xff0c;比如&#xff1a;y.sum(dim2)&#xff0c;乍一看很简单数据相加操作&#xff0c;但是仔细一想&#xff0c;这里在第3维度的数据到底是横向相加…

[OpenWrt]RAX3000一根线实现上网和看IPTV

背景&#xff1a; 1.我家电信宽带IPTV 2.入户光猫&#xff0c;桥接模式 3.光猫划分vlan&#xff0c;将上网信号IPTV信号&#xff0c;通过lan口&#xff08;问客服要光猫超级管理员密码&#xff0c;具体教程需要自行查阅&#xff0c;关键是要设置iptv在客户侧的vlan id&#…

Zibll子比主题最新学习版

Zibll子比主题5.7.1是一款为WordPress平台设计的优秀主题。它具有独特而富有吸引力的设计风格&#xff0c;同时提供了丰富的功能和卓越的性能&#xff0c;使您的网站在众多网站中脱颖而出。以下是对Zibll子比主题5.7.1的详细介绍。 &#xff08;这是我在“布谷鸟网址导航”上看…

minio可用性磁盘/节点故障恢复的研究

做poc真的很累。年初的报告拿出来按topic拿出来分享一下。 目的 通过模拟各类条件下的minio集群状态&#xff0c;确认minio是否符合官方“N/2硬盘在线&#xff0c;数据可读取&#xff1b;N/21硬盘在线&#xff0c;数据可读写”的描述。 同时通过停止minio集群中节点的服务停止…

Arris VAP2500 list_mac_address未授权RCE漏洞复现

0x01 产品简介 Arris VAP2500是美国Arris集团公司的一款无线接入器产品。 0x02 漏洞概述 Arris VAP2500 list_mac_address接口处命令执行漏洞,未授权的攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环境 FOFA…