我的第二课 数据计量单位
计算机中的最小单位??? 一个晶体管 算作 一位
位(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
浙公网安备 33010602011771号