黑马程序员 -- IOS C语言 内存剖析1

本文详细介绍了计算机科学中的进制概念,包括二进制、八进制、十进制和十六进制,并探讨了它们之间的转换方法。此外,还深入讲解了位运算的基本原理及其应用,如按位与、按位或、按位异或和按位取反等操作。

-------------------------------------- android培训、java培训、ios培训期待与您交流! --------------------------------


内存剖析

一:进制

1.什么是进制:

进制是一种计数的方式,数值的表示形式.



计算机有四种进制:   

二进制      八进制 十进制 十六进制

逢二进一 逢八进一         逢十进一         逢十六进一

0和1组成 0-7组成 0-9组成 0-9 a-f组成

编程主要用到二进制和十进制





十进制为:16

二进制为:1-10-11-100-101-110-111-1000-1001-1010-1011-1100

八进制为:1-2-3-4-5-6-7-10-11-12-13-14

十六进制为:1-2-3-4-5-6-7-8-9-10-11-12-13-14-15

a - b - c - d - e - f


默认情况下:int number = 12是十进制

int number = ob12是二进制 ob或者oB开头

int number = 012是八进制 0开头

int number = oxc 是十六进制 ox或者oX开头



printf以不同进制形式进行输出

格式符 功能

%d/%i以带符号的十进制形式输出整数

%o以不带符号的八进制形式输出整数

%x以不带符号的十六进制形式输出整数

%u以带符号的十六进制形式输出整数

%c输出一个字符

%s输出一个或多个字符

%f以小数形式输出单,双精度数,默认输出6位小数

%e以标准形式输出但,双精度,数字部分小数位数为6位



一个int类型数据占据4个字节 32bit 1字节=8bit

int number = 12;

在内存中表现为

0000 0000 0000 0000 0000 0000 0000 1100

1个字节 1个字节 1个字节1个字节


二进制转换十进制


ob1100 = 0*2的0次方 = 0

+ 0*2的1次方 = 0

+ 1*2的2次方 = 4

+ 1*2的3次方 = 8 = 12


八进制


0176 = 6*8的0次方 = 6

= 7*8的1次方 = 56

= 1*8的2次方 = 64 =126


十进制转二进制

67 = 拆分2的n次方 =64 + 2 +1

=2的6次方+2的1次方+2的0次方

=ob1000000+ob10+ob1

=ob1000011



2位二进制的取值范围:0-3 0-2的2次方-1

3位二进制的取值范围:0-7 0-7的2次方-1

n位二进制的取值范围 0-n的2次方-1




位运算

一.按位与 &

只有对应的二进制位1时,结果为1,否则为0

比如:9&5

1001&0101=1 因此 9&5=1

二进制种,与1相&就保持原位,与0相&就位0


二.按位或 |

只要对应的二个二进制有一个为1事 结果就为1,否则为0

比如 9 | 5

1001 | 0101=1101 因此 =13



三.按位异或 ^

当对应的儿尽位不同时,结果为1,否则为0

1.相同数值进行异或结果肯定为0,比如 9^9

2.可交换:9^5^6 == 9^6^5

3.任何数值跟0异或,结果还是原来的数值 9^0==9

4.a^b^a == a^a^b==b



四.按位取反~

~9 == 1001==0110

但在内存中为

原: 0000 0000 0000 0000 0000 0000 0000 1001

反: 1111 1111 1111 1111 1111 1111 1111 0110

= -10




左移

<<算乘法比较快,优化强

9<<1 -9*2的1次方==18

9<<2 -9*2的2次方==36

9<<n -9*2的n次方==

把整数a的各二进位全部左移n位 高位丢弃,低位补0

由于左移会丢弃高位,所以符号位也会被丢弃,结果可能影响政府性


右移

8 >>1- 8/2 = 4

8 >>2- 8/2的2次方 = 2

8 >>n- 8/2的N次方


左移==*2的n次方

右移==/2的n次方












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值