C语言复习——按位运算以及各种进制转换和原码、反码、补码
第一次学习时候就似懂非懂,把主要原因归结于对二进制、十进制和十六进制这些相互转换不熟练,还有就是负数、补码什么的不太通透;再次学习还是似懂非懂,做个笔记吧,顺带把各进制、什么原码、反码补码之类的知识补习一下。
一、不同进制的转换:
1、二进制转换为十进制:二进制从右向左,逐位乘上该位权重再相加;
也就是2^(位数-1)。
例:1001 0101==2^(1-1)+2^(3-1)+2^(5-1)+2^(8-1)==149
2、十进制转换为二进制:用十进制数不停对2取余,从右到左写下余数。
例:149%2=74……1 74%2=37……0 37%2=18……1 18%2=9……0
9%2=4…… 1 4%2=2…… 0 2%2=1…… 0 1%2=0…… 1
那么149转换为二进制就是1001 0101
3、二进制转换为十六进制:因2^4=16。则每1111+1刚好满足十六进制的进位,也就是二进 制每四位可表示十六进制的最大“个位数”,则二进制从右向左每四位转换为10进制,最左 侧不够四位补零从右向左依次写下来就是十六进制了。十六进制分别用A/B/C/D/E/F表示 10/11/12/13/14/15。
例:1001 0101 每4位转换为十进制为:9、5,那么十六进制也就是95。
1100 1010 每4位转换为十进制为:12、10,那么十六进制也就是CA。
4、十六进制转换为二进制:将每位十六进制数用二进制表示出来即可。
例:十六进制的CA,C=12、A=10,用二进制把12和10表示出来即可。即:1100 1010
5、十六进制转换为十进制:将十六进制从右向左分别乘上该位权重再相加,即25A4可以转 换为:
4*(16^0)+10*(16^1)+5*(16^2)+2*(16^3)=9636。
权重:该进制下,某位上的1代表多少个该进制数。
例:25A4,4代表4个16^(1-1),A代表10个16^(2-1),5代表5个16^(3-1),2代表2个
16^(4-1);权重为16^(位数-1)
例:二进制9636,6代表6个10^0,3代表3个10^1,第二个6代表6个10^2,9代表9个10^3;
权重为10^(位数-1)
6、十进制转换为十六进制:将十进制数循环对16取余,将余数从右向左依次写下来即可。
例:9636%16=602…… 4 602%16=37…… 10 37%16=2…… 5 2%16=0……2
即:2 5 10 4,十六进制表示为25A4。
二、原码、反码、补码:
原码:正数的二进制形式。
例:18 0000 0000 0001 0010
负数的原码,首位(符号位)为1,数据位和正数相同。
例:-18 1000 0000 0001 0010
注意:计算机中负数的二进制形式不是负数的原码,而是负数的补码
反码:正数的反码就是原码;负数的反码除符号位外,其他位取反。
例:18的反码: 0000 0000 0001 0010
-18的反码:1111 1111 1110 1101
补码:正数的补码就是原码,负数的补码是反码+1。
例:18的补码: 0000 0000 0001 0010
-18的补码:1111 1111 1110 1110(负数的二进制表示)
三、按位运算:
1、按位与&:参与按位与的两个数必须是整形,以补码形式出现,两个数的相对位上都是1,结果才是1,其他情况均为0。
例:0000 1010&0000 0101=0
0000 1010&0000 1100=0000 1000=8
应用实例:输出一个数据的二进制形式。
unsigned int mask=1u<<31;for(mask=1u<<31;mask;mask>>=1){printf("%d",a&mask?1:0);}
2、按位或 |:参与运算的两个数对应位上只要有一个是1,结果就是1;如果是负数,以补码形式出现。
例:0000 1010|0000 0101=0000 1111=15
0000 1010|0000 1100=0000 1110=14
3、按位异或^。数据对应位上,相同情况下为0,不同情况下为1。
例:5^6=0000 0101^0000 0110=0000 0011=3
4、按位取反~:按位取反是对数据的补码取反!然后再取原码!
例:~5,原码:0000 0101 反码:0000 0101 补码0000 0101
补码取反:1111 1010 取反码:1111 1010-1=1111 1001取原码:1000 0110=-6
~-5,原码:1000 0101 反码:1111 1010 补码1111 1011
补码取反:0000 0100 取反码:0000 0100 取原码:0000 0100
(正数补码=反码=原码)
总结:a是正数~a=-(a+1);a是负数~a=-a-1.
5、左移运算<<:二进制位向左移动N位,高位溢出舍弃,右端补0。
例:58<<2=0011 1010<<2=1110 1000=232
6、右移运算>>:二进制位向右移动N位,右端舍弃,算术移位左端补符号位,逻辑移位左端补0。(不理解算术移位和逻辑移位到底是什么意思什么情况)
例:58>>2=0011 1010>>2=0000 1110=14
C语言复习——按位运算以及各种进制转换和原码、反码、补码相关推荐
- day017:Java进制转换、原码反码补码、位运算、位移运算符
一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...
- C语言简介之进制转换,原码、反码、补码,位运算符,函数
文章目录 进制转换: 十进制转二进制:(转其他进制) 二进制转十进制: 二进制转八进制: 二进制转十六进制: 原码.反码.补码: 位运算符: & ,|, ~, ^, <<, > ...
- 由Python位运算到原码反码补码
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版.本书以Python2.5为主,但笔记主要以Python3.6为主. 一.Python位运算操作符 Python支持标准位运 ...
- 关于 原码 反码 补码 位运算
二进制 原码:最高位为符号位,0为正 1为负 正数的原码 反码 补码 都是相同的 反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1) 补码:等于 反码+1 3^-3 =? 运算过程 - ...
- C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出
1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...
- c语言原码 补码 反码,C语言 原码--反码--补码
//原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...
- C语言取字节的第n二进制,学C语言的看过来,最完整进制转换、整数和小数内存存储模型...
什么是进制 进制也就是进位计数制,是人为定义的带进位的计数方法.对于任何一种进制---N进制,就表示每一位置上的数运算时都是逢N进一位. 数数相信大家都会了,比如0 1 2 3 4 5 6 7 8 9 ...
- 【濡白的C语言】数据的存储(大小端模式,原码反码补码,浮点数的存储,浮点型精度缺失的原因)
前言 很多学习C语言之后就会对各种类型感到很烦,但是数据的类型具有相当的意义.首先是类型决定了大小,即该数据在内存中开辟的空间大小:同时不同的类型还决定了数据存储的方式,相同的数据,存入整形与浮点型方 ...
- 原码反码补码之间运算转换
1. 正数的原码=反码=补码 2. 负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+ ...
最新文章
- Windows Mobile常用程序代码(串口、图象、网络、3D、数据库、音频视频等等)
- Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出
- android contacts 编辑,如何在Android中的.csv文件中逐行编写contactn...
- PowerVR 7架构解析
- mongodb3.4 安装及用户名密码设置
- Windows中使用http-server搭建一个本地服务
- hrm系统源码php,开源HRM源码系统下载
- matlab画图,均值±标准差
- 计算机二级九月试题office,9月计算机二级office题库及答案
- java.util.Scanner包的使用
- 用地图说话:在商业分析与演示中运用Excel数据地图(全彩)
- V-REP笔记:导出自己的机器人模型
- row format delimited fields terminated by ','
- servlet登录验证并返回错误信息
- 逻辑地址与物理地址的转换
- register_chrdev_region、alloc_chrdev_region、register_chrdev区别
- 用CSS实现一个抽奖转盘(附详细代码+思路)
- Python爬取国家数据中心环境数据(全国城市空气质量小时报)并导入csv文件
- 盘点国内外十大免费CDN网站加速服务
- 天境生物启动A股上市辅导:已实现盈利,臧敬五不再是主要股东?
热门文章
- 搭建Jrebel激活服务
- 【项目实践】二阶魔方搜索算法
- 解决echarts中国地图南海岛屿为空的问题
- 【ceph】ceph集群PG(归置组)存在的意义是什么?
- TypeError: dump() missing 1 required positional argument: ‘fp‘
- itunes备份和恢复速度一样吗_Mac技巧分享:如何从加密的iTunes备份中恢复数据?...
- Javaweb-Servlet总结(概述、接口使用、配置、获取请求方式、路径操作、Request对象、Response对象)
- 读书笔记(三)工作票数据挖掘
- 一个简单的Android木马病毒的分析
- Elasticsearch:使用 Docker 来安装 FSCrawler 并摄入 Word 及 PDF 文件