推箱子
1、确定数字与字符的对应关系:
路
墙壁
人
箱子
目标点
2、定义二维数组地图
3、定义人的坐标
4、进入死循环
1、清理屏幕并显示地图
2、检查是否完成任务
是:一共走了几步,结束程序
3、获取方向键并处理
进制转换:
为什么要使用二进制、八进制、十六进制
因为CPU只能识别高低两种电流,只能对二进制数据进行计算
因为二进制虽然可以直接被CPU识别计算,但是不方便书写、记录,所以把二进制的数据先转换成八进制是为了方便记录到文档中
随着CPU的不断发展,位数不停增加,由早期的八位CPU逐渐发展到现在的64位,因此八进制不再满足需求,所以发展出了十六进制
由于历史原因,八进制还不能完全退出历史舞台
十进制转二进制:(转其他进制)
求余法: 用2对数据求余,记录余数,然后继续对商求余,知道商为0结束,过程中产生的余数就是该数据的二进制(逆序)
求权法: 从高位到低位,数据 - 2^(n-1),如果能减,第n位就是1,否则就是0
练习1: 输入一个正整数以及m,然后显示该正整数的m(m>=2)进制,超过10进制用字母表示(10A 11B 12C)
二进制转十进制:
每位的2^(n-1)求和
二进制转八进制:
第一位起每三位二进制位对应一位八进制
二进制: 1 001 101 110 010
八进制: 1 1 5 6 2
二进制转十六进制
第一位每四位二进制位对应一位十六进制
二进制: 1 1101 0111 0010
十六进制: 1 B 7 A
在C语言中: 以0开头的数据都是十进制,以0x的数据都是十六进制
%o 以八进制形式显示数据
%h 以十六进制形式显示数据
%#o %#x 以对应格式显示不同进制
原码、反码、补码:
原码: 数据的二进制就是原码 -10 10001010
反码:
正数的反码就是原码
负数的反码是原码除符号位外,其他位按位求反 11110101
补码: 数据在内存中都是以补码形式存储
正数的补码就是原码
负数的补码
1、转换成二进制的原码
2、原码的符号位不变,其他按位求反得到反码
3、反码+1得到补码