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

被折叠的 条评论
为什么被折叠?



