进制+补码+位运算+算法
张明阳
1.简述进制的定义以及进制的重要性
N进制就是逢n进一
学习进制有助于学习汇编等底层知识,同时有助于学习补码和位运算等知识
2.简述十进制与r进制之间的转化,以及二进制与十六进制之间的转化
1>r进制转化为十进制: 利用位权进行转化
2>十进制转化为r进制:除r取余,直至商0,余数倒序排列
注意:八进制末尾加的是字母o,但是在前面加的是数字0.
一个十六进制位要用四个二进制位来进行表示
1>二进制转化为十六进制:从右向左 四位一段 分别转化 不够位数的话前面补0
二进制转化为八进制:从右向左 三位一段 分别转化 不够位数的话前面补0
2>十六进制转化为二进制:将每一个十六进制位转化为四个二进制位
3.简述不同进制所代表的数值之间的关系
数字是本质,进制只是不同的表现形式
4.简述进制的一些格式
1>我们规定八进制前面加数字0,十六进制前面加0X
2>%d表示数据已十进制进行输出,%o表示数据已八进制进行输出,%X或%0X表示数据以十六进制进行输出
3>十六进制数据前面加0X,并以%#X的格式进行输出
4>在汇编当中,在数字后面加字母B表示二进制,在数字后面加字母o表示八进制,在数字后面加字母D表示十进制,在数字后面加字母H表示十六进制
5.简述编码的定义
编码就是一个数据在计算机里面到底用哪种二进制形式来进行存储,编码的形式分为很多种:原码,补码,反码等等
6.简述补码的相关概念
1>补码主要用来解决整数的存储问题,在计算机的硬件上整数是以补码的形式转化为二进制代码存储在计算机中的
2>在补码的规则当中,首位是0表示正数,首位是1表示负数
3>补码主要研究两类问题:二进制与十进制之间正数相互转化的问题\二进制与十进制之间负数相互转化的问题
4>字节本质上也是以整数的形式存储在计算机中的
7.在补码中,二进制与十进制之间正数相互转化的方法
用正常方法来进行求解
8.在补码中,二进制与十进制之间负数相互转化的方法
1>2到10
将所有位取反,末尾加1,所得数字就是该负数的绝对值
2>10到2
先求出与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1
9.请画出8位二进制代码所代表的十进制示意图
二进制 十进制
0000 0000 0
0000 0001 1
…… ……
0111 1111 127
1000 0000 -128
1000 0001 -127
…… ……
1111 1111 -1
10.在计算机中一个int变量所能存储的数字的范围是多少
1>int变量所能存储的最大正整数的十六进制代码为:
7FFFFFFF 即十进制的2147483647
2>int变量所能存储的最小负数的十六进制代码为:
80000000 即十进制的-2147483648
11.不同数据类型之间的相互转化
将丢失高位,只保留后者数据类型所占的字节数,这样相应的符号位也可能被截取
12.在计算机的存储当中,数字超过最大整数会怎样
将会溢出,因为这个时候符号位会被截取,所以输出的内容将会变成负数
13.简述位运算符的现实意义
1>通过位运算符,我们可以对数据的操作精确到每一位,应用于信息采集
2>逻辑运算符与位运算符的意义完全不同,逻辑运算符的结果只能是真或假,用1或0来进行表示
14.简述运算符的分类以及相应的用法
1>位运算符分为按位与&,按位或|,按位异或^,按位取反~,按位左移<<,按位右移>>
2>按位与&:将a的二进制代码与b的二进制代码的每一位进行相与,其余用法类似
3>按位左移<<:左移n位相当于乘以2的n次方,右边补0
按位右移>>:右移n为相当于除以2的n次方,左边补0, 前提是数据不能丢失
15.简述算法的通俗定义,狭义定义,广义定义
1>通俗定义:解决问题的思路,即解决问题的方法和步骤
2>狭义定义:对存储数据的操作,针对不同的存储结构,要完成某一个功能所执行的操作也是不同的,比如数组与链表元素的输出
这说明算法是依附于存储结构的,不同的存储结构,所执行的算法是不一样的
3>广义定义:广义的算法也叫做泛型
即无论数据是如何存储的,对该数据的操作都是一样的
这是一种分层的思想,站在更高的层次上,将内部的实现给屏蔽
数据的存储是数据结构研究的重点