当前位置:网站首页>C语言进制转换以及原补反码位运算介绍
C语言进制转换以及原补反码位运算介绍
2022-07-27 05:03:00 【我真不是二次元】
使用进制的原因
- 因为现在的CPU只能识别高低电平,只能对二进制的数据进行计算
- 虽然二进制的数据可以直接被CPU识别计算,但是不方便书写和记录,因为把二进制的数据转换成八进制是为了方便记录到文档中
- 由于CPU的位数发展不断增加,由8位逐渐发展到现在的64位,因此八进制就逐渐不能满足需求了,所以发展出了十六进制,但是由于历史原因八进制还不能完全淘汰
进制转换
1.十进制转二进制
求余法:用2对数据求余,然后继续对商求余,直到商为0结束,该过程中产生的余数就是该数据的二进制(逆序)
n%2==1\0
商%2 ==1\0
…
直到商为0
余数的逆序就是n的二进制求权法:从高位到低位,数据-2^(n-1)如果够减,那么第n位就是1,否则就是0,直到把数据减完为0
128 64 32 16 8 4 2 1
86(01010110)
72(01001000)
112(01110000)
176(10110000)
2.二进制转十进制
每位的2^(n-1)求和
10010010 145
3.二进制转八进制
从低位开始,每三位二进制位对应一位八进制
二进制: 1 001 010 101 110
八进制: 1 1 2 5 6
4.二进制转十六进制
从低位开始,每四位二进制位对应一位十六进制
二进制: 1 0010 1010 1110
十六进制 1 2 A E
在C语言中,以0开头的数是八进制数以0x开头的数是十六进制
%c 072
%o 以八进制显示数据
%x 以十六进制显示数据
%#o %#x 把数据对应的前缀显示出来
原码、反码、补码
原码
数据的二进制
反码
符号位1是负数0是正数
正数的反码就是它的原码
负数的反码就是它原码的除符号位外,其他位按位求反
补码
正数的补码就是它的原码
负数的补码是它的反码+1
注意:内存中所有数据的存储都是以补码形式存储的
1、负数转换成二进制
2、符号位不变,其余按位求反
3、反码+1得到补码
-127
原码:1111 1111
反码:1000 0000
补码:1000 0001
补码转数据
无符号补码直接转换成十进制
有符号最高位是0,说明是正数,也直接转换成十进制
有符号且最高位是1:
1、补码-1得到反码
2、符号位不变,其他位按位求反得到原码
3、原码转换成十进制数据
1111 1111 补码 有符号
1111 1110 反码
1000 0001 原码
-1 十进制
位运算符简介
A & B 按位相与 有假及假
00110010
11001010
--------
00000010 0x2
A | B 按位相或 有真及真
00110010
11001010
--------
11111010
~A 按位求反
00110010
11001101
A ^ B 按位异或 相同为0,相异为1
00110010 0x32
11001101 0xCA
--------
11111000 0xf8
A<<n 把A的补码左移n位,左边丢弃右边补0
0x32 << 3
00110010 0X32
10010000 0x90
A>>n 把A的补码右移n位,右边丢弃,左边补符号位(不是符号位补0,是符号位补1)
00110010 0X32
11110110
练习:输入一个整数,把它的4~7位设置为1010,其他位不能变
101101011 0111 0101 num
101101011 1010 0101 (num & ~(oxf<4)) | (0xA<<4)
000000000 1010 0000 0xA<<4
101101011 0000 0101 num & ~(oxf<4)
111111111 0000 1111 ~(oxf<4)
000000000 1111 0000 oxf<<4
000000000 0000 1111 oxf
边栏推荐
- 后台实现spu管理
- Redis publish subscribe mode
- Sparse array → saving and continuation of Gobang
- Collation of several difficult methods in pytorch --gather & squeeze & unsqueeze
- 学生管理系统
- torch中乘法整理,*&torch.mul()&torch.mv()&torch.mm()&torch.dot()&@&torch.mutmal()
- redis锁
- Day5 --- Flask-RESTful请求响应与SQLAlchemy基础
- md5 密码加密
- 后台订单管理
猜你喜欢

Pytorch data type and numpy data are mutually transformed

Multiplication sorting in torch, * & torch. Mul () & torch. MV () & torch. Mm () & torch. Dot () & @ & torch. Mutmal ()

异步数据-短信验证码

Flask的使用

上传七牛云的方法

Li Hongyi machine learning team learning punch in activity day03 --- error and gradient decline

强制登录,七牛云上传图片

消息可靠性处理

redis集群

Li Hongyi machine learning team learning punch in activity day02 --- return
随机推荐
cookie增删改查和异常
SQL(MySql)菜鸟教程知识
2022 Zhengzhou light industry Freshmen's competition topic - I won't say if I'm killed
枚举类实现单例模式
Simplify the mybits framework of JDBC
Differences and examples between internal classes and static internal classes
Find the number of combinations (the strongest optimization)
Rolling Division
异步数据-短信验证码
Numpy data type conversion
Flask框架创建项目初期总结
B1021 single digit statistics
商品图片的管理
如何将Excel表格中的多列内容合并到一列
SQL数据库→约束→设计→多表查询→事务
LocalDateTime和ZonedDateTime
B1029 old keyboard
How to get started quickly and strengthen learning?
redis集群
md5 密码加密