iOS分分钟搞定C语言 —— 进制

来源:互联网 发布:2016年火灾数据统计 编辑:程序博客网 时间:2024/05/16 06:24

这里写图片描述

一、什么是进制
是一种计数的方式,数值的表示形式。在iOS开发中能用到很少,在面试中会用到。

二、二进制
1> 特点:只有0和1,逢2进1
2> 书写格式:0b或者0b开头
3> 使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储
4> 二进制和十进制的互相转换
5> n为二进制位所能表示的数据范围(不考虑负数):0~2的n次方

三、进制
1> 特点:0~7,逢八进一
2> 书写格式:0开头
3> 八进制和二进制的互相转换

四、十六进制
1> 特点:0~F,逢十六进一
2> 书写格式:0x或者0X开头
3> 十六进制和二进制的互相转换

五、 原码反码补码概念及转换
数据在计算机内部是以补码的形式储存的
数据分为有符号数和无符号数。

(1)原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
(2)反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
(3)补码
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。

在64位计算机中,-1的原码、反码、补码如下
-1原码 【 1000 0000 0000 0000 0000 0000 0000 0001】
-1反码 【1111 1111 1111 1111 1111 1111 1111 1110 】
-1补码 【1111 1111 1111 1111 1111 1111 1111 1111 】

六、位运算符
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。 C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的 char,short,int与long类型。

(1)位运算符与
& 按位与
只有对应的两个二进位均为1时,结果位才为1,否则为0
口诀: 同1为1;

规律
二进制中,与1相&就保持原位,与0相&就为0
应用场景:
按位与运算通常用来对某些位清0或保留某些位。例如把a的高位都清0,保留低八位,那么就a&255
判断奇偶: 将变量a与1做位与运算,若结果是1,则 a是奇数;若结果是0,则 a是偶数
任何数和1进行&操作,得到这个数的最低位

(2)位运算符异或
^ 按位异或
当对应的二进位相异(不相同)时,结果为1,否则为0
规律
相同整数相^的结果是0。比如5^5=0;

(3)位运算符取反
~ 取反
各二进位进行取反(0变1,1变0)
多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6
因此得出结论:a^b^a = b

(4)左移位运算符
把整数a的各二进位全部左移n位,高位丢弃,低位补0。
左移n位其实就是:乘以2的n次方。

由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性。
应用场景:
快速计算一个数乘以2的n次方

(5)右移位运算符
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方

·为正数时, 符号位为0,最高位补0
·为负数时,符号位为1,最高位是补0或是补1
·取决于编译系统的规定

应用场景:
快速计算一个数除以2的n次方

这里写图片描述

0 0
原创粉丝点击