进制运算与位运算

文章详细介绍了不同进制之间的转换方法,包括十进制转二进制、二进制转十进制、八进制与二进制及十六进制的相互转换。同时,阐述了位运算的概念,如与(&)、或(|)、异或(^)和非(~)操作,并提供了它们在判断奇偶性、数据加密等场景的应用。
摘要由CSDN通过智能技术生成

进制运算

进制总览

十进制

十进制转二进制

十进制整数转换为二进制整数采用"除2取余,逆序排列"法

十进制数29转成二进制就是:11101

二进制转十进制

二进制转十进制采用“权相加法”

八进制

Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字

八进制--->二进制

为了将一个二进制数换算为八进制,只需将二进制串划分成每三个位一组(如果需要的话,在前面补零),然后查表2-2,将三位一组的位串替换为相应的八进制数字即可

例如,八进制123换算成二进制的结果就是 001 010 011 

十六进制

六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制

一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字

十六进制转换为二进制

(1CA)16 = (1   1100    1010)2

每一个16进制数字转换为2进制并起来即可。

十六进制转换为八进制

先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。

例: (1CA)16 = (1 11   00 1   010)2 = (712)8

说明:小数点前的高位零和小数点后的低位零可以去除。​​​​​​​

通用的进制转换

通用的进制转换

不同进制之间的转换本质就是确定各个不同权值位置上的数码

转换正整数的进制的有一个简单算法,就是通过用目标基数作长除法;余数给出从最低位开始的“数字”

例如,1020304从10进制转到7进制

再如,10110111 从2进制到5进制

位运算

位运算总览

位运算就是直接对整数在内存中的二进制位进行操作

与(&------and)

相同位的两个数字都为1,则为1,其余为0

00101 & 1110000100

总结

用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数

用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位

或(|------or

相同位只要一个为1即为1

00101 | 1110011101

总结

用于二进制特定位上的无条件赋值,如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数

异或^------xor

相同位不同则为1,相同则为0

00101^1110011001

特点

xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变

总结

可以用于简单的加密,比如你想对你MM说1314520,但怕别人知道,于是双方约定拿你的生日19880516作为密钥。1314520 xor 19880516 = 20665500,你就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520

~------not

把内存中的0和1全部取反

使用not运算时要格外小心,你需要注意整数类型有没有符号。如果not的对象是无符号整数(不能表示负数),那么得到的值就是它与该类型上界的差,因为无符号类型的数是用00到$FFFF依次表示的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月木@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值