[c/c++] programming之路(31)、位运算(二)
一、取反的高级用法
#include<stdio.h>
#include<stdlib.h> //取反的作用:末位清零 取反适用于各种位数不同的数据
void main0(){
unsigned char ch=; //0100 1001
unsigned short sh=; //0100 0000 0000 0001
ch=ch&~;//抹平最后一位
sh=sh&~;
printf("%d,%d\n",ch,sh);
system("pause");
} //求余数,不用求余运算符
void main(){
unsigned char ch=; //0100 1001 求出73被4整除的余数
//首先,将73换为2进制数,然后抹平最后两位(抹平后的数就可以整除4了)
printf("%d\n",ch-(ch&~));// ch&~3 抹平最后两位
system("pause");
}
二、内存(高位在高字节,低位在低字节)
三、补码
#include<stdio.h>
#include<stdlib.h> void main(){
//printf不会进行类型转换
printf("%d\n",10.3);//printf不管是什么类型,按照%d,%f解析数据,不同的解析方式有不同的结果
printf("%f\n",);
printf("%d\n",(int)10.3);
printf("%f\n",(float)); system("pause");
}
char ch=,ch1='';//字符与编号的区别
printf("%d,%d\n",ch,ch1);
system("pause");
#include<stdio.h>
#include<stdlib.h> void main(){
int x=;
int y=-;
//1111 1111 1111 1111 1111 1111 1111 1111 在内存中的存储方式
//无符号,没有符号位,全都是数据 4294967295 //0000 0000 0000 0000 0000 0000 0000 0001 1原码
//1000 0000 0000 0000 0000 0000 0000 0001 -1原码
//1111 1111 1111 1111 1111 1111 1111 1110 -1反码
//1111 1111 1111 1111 1111 1111 1111 1111 -1补码 printf("%d,%u\n",x,x);
printf("%d,%u\n",y,y);
system("pause");
}
unsigned int num=-;
//1111 1111 1111 1111 1111 1111 1111 1111 内存的存储方式
printf("%d,%u\n",num,num);
四、移位(CPU寄存器中进行计算)
1.左移
#include<stdio.h>
#include<stdlib.h> //左移一位等于*2
void main(){
unsigned char ch=; //0000 0001 1
printf("%d\n",ch<<); //0000 0010 2
printf("%d\n",ch<<); //0000 0100 4 // ch<<2 CPU寄存器计算
printf("%d\n",ch); //移位不改变原值
printf("%d\n",ch=(ch<<));//通过赋值号改变原值
system("pause");
}
//左移要注意溢出,考虑数据的极限
void main0(){
unsigned char ch=; //0000 0001 1
//ch=ch<<7; //1000 0000 128
ch=ch<<; //10000 0000 溢出,为0
printf("%d\n",ch); //溢出后的数据无法读取
system("pause");
}
2.右移
#include<stdio.h>
#include<stdlib.h> //右移一位等于÷2
void main(){
unsigned char ch=; //1000 0000
printf("%d\n",ch>>);
printf("%d\n",ch>>);
printf("%d\n",ch);
printf("%d\n",ch=ch>>);
system("pause");
}
五、微软试题
#include<stdio.h>
#include<stdlib.h> void main(){
int x=; //10 0111 0000 1111
int i=;
while (x)
{
i++;
x=x&(x-);//每次操作清零一个“1”,用于统计二进制整数有多少个1
}
printf("%d\n",i);
system("pause");
}
返回值为8
补充:9999如何转为2进制数
[c/c++] programming之路(31)、位运算(二)的更多相关文章
- 剑指offer 11. 位运算 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数 private stat ...
- Mysql 查询—按位运算
前言:虽说这是件小事儿,但本宝宝思前想后,还是为它留下一笔,嘿嘿.反正写博客不浪费纸和笔!好久没有开启我的逗比模式了,我亲爱的乖徒弟DBA,DBB,DBAA等,好久不见你们,遥祝幸福快乐+DB. 整个 ...
- zoj--3870--Team Formation(位运算好题)
Team Formation Time Limit: 3000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- [c/c++] programming之路(30)、位运算(一)
一.取反 ~ #include<stdio.h> #include<stdlib.h> void main(){ unsigned ; //0000 1111 char的单位是 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解
本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表 位运算 SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...
- JavaScript 位运算总结&拾遗
最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...
- javascript 位运算
位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...
- javascript位运算
javascript作为一门高级语言,他尽量让开发人员减少思考底层的硬件工作原理,而将精力集中在逻辑开发的层面.不过,不论这门语言多么高级,我们必须知道数据依然以bits的形式存储,有时候我们会直接与 ...
随机推荐
- CListCtrl颜色设置
动态改变listctrl 单元格背景及文字颜色 m_listshow.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//插入列 m_listsh ...
- 深入剖析虚拟DOM提升性能(Vue,React);
I.原始渲染方式(直接操作DOM): 1.state数据: 2.JSX模板: 3.数据 + 模板 相结合,生成真实的DOM来显示: 4.state发生改变: 5.数据 + 模板结合,生成真实的DOM来 ...
- ArcGIS为面要素生成邻接矩阵
1. 分析工具——>空间关联 使用注意,直接用FID似乎不可行,我是自己重新建了一个"String"字段,值用字段计算器从FID获取过来.之后按照上面的步骤才成功. 实现主要 ...
- linux云计算面试知识汇总,文件共享--vsftpd秘籍
随着天气的升温快要步入夏天,紧随着面试季来喽,想知道Linux运维面试时都会被问到哪些问题吗?特整理出这些资料给大家参考学习,据说知道全部答案的人,月薪能过万,还不快快码下,以备后用! 今天小编将继续 ...
- httpappplication 和 httpmodule 的理解(转载,写的很好)
第一部分:转载自Artech IIS与ASP.NET管道 ASP.NET管道 以IIS 6.0为例,在工作进程w3wp.exe中,利用Aspnet_ispai.dll加载.NET运行时(如果.NET ...
- VMware卸载有残留,再安装时报错提示MSI Failed
引用自吾爱破解论坛:https://www.52pojie.cn/thread-455779-1-1.html 解决方法:软件自动清理法: 软件 地址:下载地址1:链接:http://pan.baid ...
- windows----------如何禁用PC端微信的开机启动
1.开始菜单--->运行--->输入msconfig 2.如下图,然后点击启动 3.打开任务管理器 4.右键wechat,然后禁用.
- Haproxy小酌
1.Haproxy简介 负载均衡: 基于软件:HAProxy(四层+七层),Nginx(七层) 基于操作系统:LVS(四层) 作用:实现高可用,负载均衡,基于TCP(第四层)和HTTP(第七层)的应用 ...
- Redis详解与常见问题解决方案
Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...
- SQL- 行转列,多行转多列 - max 函数
效果如图,把同一个 code, 按 cate 列相同行的进行合并后分两行,把mode 每种类型转换成 列名 ,主要用到了 max 函数,很实用 if exists(select * from temp ...