进制运算
进制总览
十进制
十进制转二进制
十进制整数转换为二进制整数采用"除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 & 11100为00100
总结
用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数
用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位
或(|------or)
相同位只要一个为1即为1
00101 | 11100为11101
总结
用于二进制特定位上的无条件赋值,如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数
异或(^------xor)
相同位不同则为1,相同则为0
00101^11100为11001
特点
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变
总结
可以用于简单的加密,比如你想对你MM说1314520,但怕别人知道,于是双方约定拿你的生日19880516作为密钥。1314520 xor 19880516 = 20665500,你就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520
非(~------not)
把内存中的0和1全部取反
使用not运算时要格外小心,你需要注意整数类型有没有符号。如果not的对象是无符号整数(不能表示负数),那么得到的值就是它与该类型上界的差,因为无符号类型的数是用00到$FFFF依次表示的