我的第二课 数据计量单位

计算机中的最小单位??? 一个晶体管 算作 一位

​ 位(bit) 一个0或1

计算机中的最小的存储单位??

​ 字节(Byte) B 8个0或1

换算: 1字节(byte)=8位(bit)

字符+表情+符号+加阿拉伯数字 刚好128个

一个字节 0000 0000 ---1111 1111 取值范围 刚好0-127===128个

所以 一个字节等于8个字符 0000 0000--1111 1111

常量

常量:在程序运行过程中,其值不能被改变的量

​ 常量一般出现在表达式或赋值语句中

整形常量:11, 110 , -100, 0(感觉就是整数)

实行常量:3.14 , 0.222, -3.2222(小数)

字符型常量:'a' 'c '

字符串常量:"Hello World" , "你好"

常量有两种

define 宏常量

const 关键字修饰的常量

变量

变量:在程序运行过程中,其值可以被改变

变量在使用前必须先定义,定义变量必须有相应的数据类型

变量命名规范

1.不能是数字开头,必须是下划线或者字母开头

2.标识符中字母区分大小写

3.不能是关键字

变量的特点

变量在编译时为其分配相应的内存空间

可以通过其名字和地址访问相应内存

声名和定义的区别

声名变量不需要建立储存空间. 如:extern int a:===(只是说明有这么一个 int类型的A变量)

定义变量需要建立存储空间. 如: int b ;

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

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f
16 10000 20

二进制 八进制 十六进制 转换方法

二进制 421八进制(从高位开始,一个八进制位等于三个二进制位)

如 八进制 198537

​ 分对 1 4 6 5 3 7

​ 421 421 421 421 421 421

​ 方法 1取1. 4取4. 6取42 .5取41.3取21.7取421 (取那个对应的二进制位变1,不取为0)

​ 二进制 001 100 110 101 011 111

二进制==8421=十六进制(从高位开始,1个十六进制位等于4个二进制位)

如 十六进制 7F3B

​ 分队 7 F(15) 3 B(11)

​ 8421 8421 8421 8421

​ 方法 7取421 . F取8421 3取21 B取821

​ 二进制 0111 1111 0011 1011

十进制(从右到左)

如 二进制 0111 1111 0011 1011
$$
120+1*21+022+1*23
+124+1*25+026+0*27+128+1*29+1210+1*211+1212+1*213+12^14
=1+2+0+8+16+32+0+0+256+512+1024+2048+4096+8192+16384
=32571
$$
​ 等于十进制 32571

进制的输出方式

int x = 10 //默认的是十进制

int a = 010 //数字前面加0表示八进制的10 === 是十进制的8

int b = 0x10 //数字前面加0x表示十六进制10 ====是十进制的16

printf("%d\n",x): 结果是10 %d 按照十进制数据数据输出显示

printf("%o\n",a); 结果显示10 %o(字母o) 按照八进制数据输出显示 %d a 显示8

printf("%x\n",b);结果显示10 %x 按照十六进制数据显示 %d b 显示 16

计算机内存数值存储方式

原码

​ 将最高为作为符号位(0表示正,1表示负),其余给位代表数值本身绝对值

​ +7 原码 0000 0111

​ -7 原码 1000 0111

​ -0 原码 1000 0000

反码

一个正数 反码和原码相同

一个负数 符号为不变是1,其他各位与原码相反

​ +7 反码 0000 0111

​ -7 反码 1111 1000

​ -0 反码 1111 1111

补码

原码和反码都不利于计算机运算, 如 +7 + -7 原码相加需要判断符号位

整数: 原码,反码 ,补码都相同

负数:最高位为1,其余的各位原码取反 +1

-7的补码 = 1000 0111的反码1111 1000+1= 1111 1001

-0的补码= 1000 0000的反码 1111 1111 + 1= 1 0000 0000 (进位舍弃 ===0000 0000)

用补码进行运算,减法可以通过加法实现

如9-3

9的补码+(-3)的补码 0000 1001 + 1111 1101 = 1 0000 0110 去掉越位 0000 0110 ==6