使用科学计算器计算进制转换与逻辑位运算
【作者声明】
本文所有文字均为作者原创,所有图片均为作者本人亲自拍摄或制作。
版权所有,仅供阅读欣赏,禁止任何单位或个人以任何形式对本文的文字或图片进行包括但不限于复制、转载、引用、抄袭、截图、模仿、翻译、印刷等之中的一项或多项的行为。禁止将本文用于商业用途。
作者保留所有权利,请尊重作者的劳动成果,谢谢合作。
前言
为了满足大家希望更好地使用手中的科学计算器的需求,理解与熟悉计算器上的各种功能,提高在各类科学计算器应用场合下(特别是考试)的计算器使用效率,我们特别策划了一些计算器基本使用方法的系列文章,讲解科学计算器上一些比较常用的功能的使用,方便大家学习与交流。
本次要向大家介绍的内容是如何使用科学计算器进行进制转换与逻辑位运算。涉及到的内容包括在计算器上进行有符号 整数 的2、8、10、16进制换算、不同进制的混合运算以及与运算(and)、或运算(or)、非运算(Not)等逻辑位运算等的计算。 这一功能在计算机与计算机科学、各种语言的程序设计(C、C++、Python、BASIC等等)、单片机、微机原理、数字电子技术等领域中经常用到,因此使用计算器来完成这些计算,不仅能够避免手算的麻烦,还可以避免位数过多容易出错的问题。
进制转换与逻辑位运算在不同的计算器上能够表示或计算的范围不同。这篇文章中主要以 卡西欧(CASIO)的fx-991CN X中文版 这一型号的计算器进行讲解,原因如下:
(1)fx-991CN X能够进行进制转换计算的范围是(二进制)32位有符号整数,以
补码
的形式表示,最高位是符号位,0代表整数,1代表负数。
运算的范围不受所选进制的限制,不同的进制之间可以在这一范围下无缝转换
。即不论在哪个进制下,运算的范围都是
十进制:-2147483648(
-2^{31}
)~+2147483647(
+2^{31}-1
),
十六进制:0,正数00000001~7FFFFFFF,负数80000000~FFFFFFFF;
(2)在表示二进制的时候,数字以四个一组进行区分,方便查看。
其他的型号,例如在fx-991ES PLUS上,虽然十进制、十六进制、八进制下的运算范围都是32位有符号整数,但由于屏幕显示的限制,在二进制下被缩减到了16位有符号整数,如果在其他进制下的计算范围超出了二进制下的表示范围,切换到二进制时就会立即报错,干扰计算。再例如夏普的型号,EL-W82TL或EL-W991TL,这两款计算器上不同的进制运算范围都不一样,计算时更容易出错和乱套。
进制转换与逻辑位运算的计算模式
在fx-991CN X上,进制转换与逻辑位运算的计算模式是“基数”模式,即模式菜单中的第三个模式,按[菜单]、[3]即可进入,默认是十进制(Dec):

进入基数模式后,要注意计算器上的按键功能发生了一些变化。计算器按键面板上,以蓝色印刷的和进制转换相关的功能启用,例如上方印有蓝色的“DEC”、“HEX”、“BIN”、“OCT”的按键,在基数模式中直接按下这个按键就是切换到相应的进制,而带有蓝色括号的变量“A”、“B”、“C”、“D”、“E”、“F”所在的按键,如果直接按下就是输入十六进制的数码,如下图所示:

例如按一下“HEX”所在的[ x^{\blacksquare} ]键,屏幕上方的[Dec]就变成了[Hex]。要注意这个时候字母变量仍然是可用的,计算器上为了区分这两者,将十六进制数码的“ABCDEF”使用粗体显示,而字母变量保持正常的字体,如下图所示:

在基数模式中,[OPTN]按键菜单分为两页,第一页是逻辑运算,第二页是各个进制的数基:

fx-991ES PLUS的基数计算模式是按[MODE]键之后按[4]选择BASE-N进入,基数计算菜单(BASE)按[SHIFT]、[3]打开,和基数计算相关的按键是以绿色印刷的。

进制转换与运算
基于以上的讨论,我们用几个例题来说明fx-991CN X上进行进制转换与运算的操作过程。
【例1】将十进制数 (991)_{10} 转化为十六进制 (3\mathrm{DF})_{16} 、二进制 (1111011111)_2 、八进制 (1737)_8 。
在十进制[Dec]下,先输入991,然后按[=],再依次按[HEX]、[BIN]、[OCT]对应的按键,即可得到转换的结果:

注意这里一定要先按[=]把结果计算出来,然后再进行转换。
【例2】计算:
(1)
(1001)_2+(0011)_2=(1100)_2
(2)
(741)_8-(456)_8=(263)_8
(3)
(7\mathrm{AB})_{16}\times(8\mathrm{CD})_{16}=(437\mathrm{BEF})_{16}
(4)
(1100110)_2\div(1011)_2=(1001)_2
在计算每个式子 之前 ,先按要计算的进制对应的按键,然后直接执行计算。例如计算(1)式,先按[BIN]对应的按键,然后直接输入1001+0011,按[=]算出结果。

注意:在基数模式中所有进制的计算结果都是整数,包括除法。
【例3】计算 (123)_{10}+(\mathrm{ABC})_{16}-(456)_8 ,最终的结果使用二进制表示。
前面所说的[OPTN]键里面的选项菜单第二页是各个进制的数基,因此先按[BIN]让计算器进入二进制状态,然后再输入各个数基下的数。例如要输入 (123)_{10} ,应当先输入十进制的数基“d”,再输入123。其他进制数的输入方式类似,最后按[=]以二进制形式给出结果:

在fx-991ES PLUS上,只要不超过二进制的表示范围(16位),一般的计算也能够正常地完成。例如fx-991ES PLUS的进制转换计算:

逻辑位运算
逻辑位运算在原码-反码-补码转换以及与、或、非等逻辑运算里面经常会用到。
【原码、反码、补码的计算】
我们知道, 正数的原码、反码、补码都是相同的 ,所以需要计算的就是负数的原码、反码、补码的计算问题。
【例1】计算-123的原码、反码、补码,以8位有符号数表示。
原码:11111011(符号位是1,其他位和正数一样)
反码:10000100(符号位是1,其他位将原码按位取反)
补码:10000101(反码加1)
-123的原码是123的二进制形式,其中符号位为1。
首先计算十进制数123的二进制表示形式(输入d123,按[=]),那么 原码就是将第8位改成1,其他更高的位数直接无视 。然后按[OPTN]打开基数计算菜单,选择Neg(负数),然后输入Neg(Ans),按[=]得到补码。再减去1,得到反码。

【逻辑位运算】
在数字电路中经常需要计算各种逻辑位运算。计算器上提供了五种逻辑位运算:
(1)Not,非运算,Not(1)=0,Not(0)=1;
(2)and,与运算,(1 and 1)=1,(1 and 0)=(0 and 0)=(0 and 1)=0;
(3)or,或运算,(0 or 0)=0,(0 or 1)=(1 or 0)=(1 or 1)=1;
(4)xor,异或运算,(1 xor 0)=(0 xor 1)=1,(1 xor 1)=(0 xor 0)=0;
(5)xnor,同或运算,(1 xnor 0)=(0 xnor 1)=0,(1 xnor 1)=(0 xnor 0)=1。
分别对应计算器上[OPTN]键选项菜单里面第一页的第2-5个指令。
【例2】设 A=(1011)_2 , B=(0011)_2 , C=(0110)_2 , D=(1110)_2 ,计算下图所示的逻辑电路的输出值。

从图中可以看出, F=\overline{AB+CD} ,即先计算A and B,再计算C and D,然后将两个结果进行或运算,最后进行非运算。
在计算器上,先进入二进制,然后直接输入算式Not((1011and0011)or(0110and1110)),按[=]就能计算出结果:

由于运算都是4位,所以最后取最低的4位,算出 F=(1000)_2 。
总结
“基数模式”是计算器上很多人容易忽略的一个功能,这个模式下的功能使用起来相对比较简单,用来解决数字电子技术中的逻辑门电路的运算、计算机程序中的进制换算等问题是非常方便的。