一、取反的高级用法

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //取反的作用:末位清零 取反适用于各种位数不同的数据
  5. void main0(){
  6. unsigned char ch=; //0100 1001
  7. unsigned short sh=; //0100 0000 0000 0001
  8. ch=ch&~;//抹平最后一位
  9. sh=sh&~;
  10. printf("%d,%d\n",ch,sh);
  11. system("pause");
  12. }
  13.  
  14. //求余数,不用求余运算符
  15. void main(){
  16. unsigned char ch=; //0100 1001 求出73被4整除的余数
  17. //首先,将73换为2进制数,然后抹平最后两位(抹平后的数就可以整除4了)
  18. printf("%d\n",ch-(ch&~));// ch&~3 抹平最后两位
  19. system("pause");
  20. }

二、内存(高位在高字节,低位在低字节)

三、补码

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void main(){
  5. //printf不会进行类型转换
  6. printf("%d\n",10.3);//printf不管是什么类型,按照%d,%f解析数据,不同的解析方式有不同的结果
  7. printf("%f\n",);
  8. printf("%d\n",(int)10.3);
  9. printf("%f\n",(float));
  10.  
  11. system("pause");
  12. }

  1. char ch=,ch1='';//字符与编号的区别
  2. printf("%d,%d\n",ch,ch1);
  3. system("pause");

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void main(){
  5. int x=;
  6. int y=-;
  7. //1111 1111 1111 1111 1111 1111 1111 1111 在内存中的存储方式
  8. //无符号,没有符号位,全都是数据 4294967295
  9.  
  10. //0000 0000 0000 0000 0000 0000 0000 0001 1原码
  11. //1000 0000 0000 0000 0000 0000 0000 0001 -1原码
  12. //1111 1111 1111 1111 1111 1111 1111 1110 -1反码
  13. //1111 1111 1111 1111 1111 1111 1111 1111 -1补码
  14.  
  15. printf("%d,%u\n",x,x);
  16. printf("%d,%u\n",y,y);
  17. system("pause");
  18. }

  1. unsigned int num=-;
  2. //1111 1111 1111 1111 1111 1111 1111 1111 内存的存储方式
  3. printf("%d,%u\n",num,num);

四、移位(CPU寄存器中进行计算)

1.左移

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //左移一位等于*2
  5. void main(){
  6. unsigned char ch=; //0000 0001 1
  7. printf("%d\n",ch<<); //0000 0010 2
  8. printf("%d\n",ch<<); //0000 0100 4 // ch<<2 CPU寄存器计算
  9. printf("%d\n",ch); //移位不改变原值
  10. printf("%d\n",ch=(ch<<));//通过赋值号改变原值
  11. system("pause");
  12. }

  1. //左移要注意溢出,考虑数据的极限
  2. void main0(){
  3. unsigned char ch=; //0000 0001 1
  4. //ch=ch<<7; //1000 0000 128
  5. ch=ch<<; //10000 0000 溢出,为0
  6. printf("%d\n",ch); //溢出后的数据无法读取
  7. system("pause");
  8. }

2.右移

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //右移一位等于÷2
  5. void main(){
  6. unsigned char ch=; //1000 0000
  7. printf("%d\n",ch>>);
  8. printf("%d\n",ch>>);
  9. printf("%d\n",ch);
  10. printf("%d\n",ch=ch>>);
  11. system("pause");
  12. }

五、微软试题

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void main(){
  5. int x=; //10 0111 0000 1111
  6. int i=;
  7. while (x)
  8. {
  9. i++;
  10. x=x&(x-);//每次操作清零一个“1”,用于统计二进制整数有多少个1
  11. }
  12. printf("%d\n",i);
  13. system("pause");
  14. }

返回值为8

补充:9999如何转为2进制数

[c/c++] programming之路(31)、位运算(二)的更多相关文章

  1. 剑指offer 11. 位运算 二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.   //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数     private stat ...

  2. Mysql 查询—按位运算

    前言:虽说这是件小事儿,但本宝宝思前想后,还是为它留下一笔,嘿嘿.反正写博客不浪费纸和笔!好久没有开启我的逗比模式了,我亲爱的乖徒弟DBA,DBB,DBAA等,好久不见你们,遥祝幸福快乐+DB. 整个 ...

  3. zoj--3870--Team Formation(位运算好题)

    Team Formation Time Limit: 3000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  4. [c/c++] programming之路(30)、位运算(一)

    一.取反 ~ #include<stdio.h> #include<stdlib.h> void main(){ unsigned ; //0000 1111 char的单位是 ...

  5. 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 ...

  6. Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range

    在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...

  7. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解

    本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表   位运算   SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...

  8. JavaScript 位运算总结&拾遗

    最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...

  9. javascript 位运算

    位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...

  10. javascript位运算

    javascript作为一门高级语言,他尽量让开发人员减少思考底层的硬件工作原理,而将精力集中在逻辑开发的层面.不过,不论这门语言多么高级,我们必须知道数据依然以bits的形式存储,有时候我们会直接与 ...

随机推荐

  1. jmeter 之 if controller

    jmeter版本5.0.下面是jmeter5.0的if逻辑控制器的截图 标红字体的意思大概是,如果勾选了 下面的 interpret condition as variable expression ...

  2. Spring框架学习之--搭建spring框架

    此文介绍搭建一个最最简单的spring框架的步骤 一.创建一个maven项目 二.在pom.xml文件中添加依赖导入spring框架运行需要的相关jar包 注意:在引入jar包之后会出现org.jun ...

  3. Lock和Synchronized

    1.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取锁2.Lock中的某些锁允许对共享资源的并发访问,如ReadWriteLock读写锁,readLock()获取读锁,wri ...

  4. 《图解HTTP》读书笔记(三:无状态协议/cookie管理状态)

    HTTP是一种不保存状态,即无状态(stateless)协议.HTTP协议自身不对请求和响应之间的通信状态进行保存. ——HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Co ...

  5. 跨平台技术实践案例: 用 reactxp 重写墨刀的移动端

    Authors:  Gao Cong, Perry Poon Illustrators:  Shena Bian April 20, 2019 重新编写,又一次,我们又一次重新编写了移动端应用和移动端 ...

  6. jQuery动画方法

    下面介绍一些使用jQuery实现动画的方法: html中有如下代码: <button id="btn-box1">show</button> <but ...

  7. mybatis增强

    MyBatis SQL参数传递(掌握) SQL映射器Mapper接口(掌握)Myb atis批量操作(理解掌握) (多对一)关联映射(掌握) (一对多,多对多)集合映射 MyBatis原理回顾(Obj ...

  8. 关于asp.net中链接数据库的问题

    学习了asp.net 有web服务器控件和C#代码两部分 那么在做页面时候,需要用到数据库和asp.net的链接 课本上只是说明了和SQL server的链接,本文介绍如何在.net中链接 Acces ...

  9. IconFont --阿里巴巴矢量库

    超多的图标网站,可自己设置颜色,然后下载. IconFont --阿里巴巴矢量库

  10. HDU 1556 BIT区间修改+单点查询(fread读入优化)

    BIT区间修改+单点查询 [题目链接]BIT区间修改+单点查询 &题解: BIT区间修改+单点查询和求和的bit是一模一样的(包括add,sum) 只不过是你使用函数的方式不一样: 使用区间的 ...