今日主题:初赛知识
目录:
1. 进制转换
2. 前中后缀表达式转换计算
3. 原反补码
4. 位运算
5. 排列组合
一. 进制转换
K进制:逢K进1,例:2进制,逢2进1
如果没有学过的可以抄一下:
k−x=1kx{k^{-x}} = \frac{1}{k^x} k−x=kx1
K进制的位权:
位权:指一个数的某个位上的数字大小,比如10进制的个位一个代表1,十位一个代表10一样。
整数部分的位权:整数部分第N位的位权是KN-1(K的I-1次方)
小数部分的位权:小数部分第N位的位权是K0-N(K的0-N次方)
K进制转换成10进制:
位权转换法:通过位权算出每个位置上的10进制数字
例子:
abc.def(K)=aK3+bK1+cK0+dK−1+eK−2+fK−3abc.def(K) = a{K^3}+b{K^1}+c{K^0}+d{K^{-1}}+e{K^{-2}}+f{K^{-3}} abc.def(K)=aK3+bK1+cK0+dK−1+eK−2+fK−3
101.101(2)=1∗22+0∗21+1∗20+1∗2−1+0∗2−2+1∗2−3=5.875101.101(2)=1*{2^2}+0*{2^1}+1*{2^0}+1*{2^{-1}}+0*{2^{-2}}+1*{2^{-3}}=5.875 101.101(2)=1∗22+0∗21+1∗20+1∗2−1+0∗2−2+1∗2−3=5.875
二.前中后缀表达式的转换与计算
什么是前缀表达式:把操作符放在操作数前面(操作符就是运算符号,操作数是数字)
什么是中缀表达式:人写的
什么是后缀表达式:把运算符放在操作数中间
中缀 转 后缀:
例:2+3*5
1. 先把所有的算式加上括号 (2+(3*5))
2. 把所有的括号里的符号移到后面的括号的前面=(2(35*)+)
3. 去括号=2 3 5 * +
例题:a+b*c+(d/e)=(a+((b*c)+(d/e)))=(a ((b c*)(d e/))+)=a b c * d e /
中缀 转 前缀:中缀转后缀的第二步换成移到前面的括号的后面,其他都一样
后缀 转 中缀:
例:2 3 5 * +
1. 从左往右遍历,如果遇到操作符就把左边两个数字进行操作符运算并加上括号= (2+(3*5))
2. 然后去掉没用的括号就好了=2+3*5
前缀 转 中缀:就是把后缀转中缀的第一步变成从右往左遍历,如果遇到操作符就把右边两数进行运算并加上括号
后缀表达式的计算:把后缀转中缀的第一步换成加上就可以了:
例:2 3 5 * + 遍历后先加上 3*5再由他们两个加
前缀表达式的计算:一样的
三.原反补码:
注意:计算机存储的所有数据都是由补码进行存储的
这里所有数字都讨论为8位二进制带符号位
符号位:这一串的第一个数字是符号位,0为正数,1为负数
正数的原反补码是一样的
负数的原反补码:
以数字-35为例
码 数字 意思 原码 10011001 就是正常数字 反码 11100110 把原码除了符号位其他的翻转0->1,1->0 补码 11100111 反码+1,涉及进位的要注意一下
四.位运算:
位运算是通过数字的二进制的位进行运算
(1):按位与(&):
记忆口诀:同为 1 则为 1, 否则为 0
a b a&b 0 0 0 0 1 0 1 0 0 1 1 1
(2)按位或(|):
记忆口诀: 同为 0 则为 0, 否则为 1;有 1 则为 1, 否则为 0
a b a|b 0 0 0 0 1 1 1 0 1 1 1 1
(3)按位非(~):
记忆口诀:所有位都取反, 包括符号位
(4)按位异或(^):
记忆口诀:相反为1,相同为0
a b a~b 0 0 0 0 1 1 1 0 1 1 1 0
按位右移(>>):
记忆口诀:往右移
特殊公式:
n>>m=n2mn >> m = \frac{n}{2^m} n>>m=2mn
按位左移(<<):
记忆口诀:往左移
特殊公式:
n<<m=2mn;n << m = 2^mn; n<<m=2mn;
六.排列组合:
排列是有顺序的,从N个元素里找出M个数字进行排列排序:通常以下面的公式进行计算
Anm=n!(m−n)!A{^{m}_{n}}=\frac{n!}{(m-n)!} Anm =(m−n)!n!
组合是没有顺序的,从N个元素里找出M个元素进行组合:通常以下面的公式进行计算
***=n!m!(m−n)!C{^{m}_{n}}=\frac{n!}{m!(m-n)!} *** =m!(m−n)!n!