适合软硬件开发人员的计算器,二进制运算强大,支持64位。
采用表达式驱动,输入表达式便即时显示结果,抛弃传统计算器繁琐的按钮,表达式可粘贴或回调重复使用,可以任意复杂组合。
支持二进制串直接运算,如0b1101 & 0b0011= 1。
支持2/8/16进制常量、字符常量,以及输出为这些进制,轻松解决各种进制转换。
支持与、或、非、异或、移位(循环、逻辑、算术),直接读写二进制位,指定位段读、写、置1、清0、反转。
支持常用位运算、数学运算、关系运算、常用转换运算,以运算符或函数方式调用。
支持类C语言库函数调用。
运算结果可存放在变量中。
总之,此计算器相当于即时执行的C语言表达式,但用起来更方便、更高效。
使用前请阅读窗口内的帮助,便可成为开发工作中的好帮手。
CSDN下载地址:http://download.csdn.net/detail/huyansoft/7642797
[程序员二进制计算器 v1.36 帮助]
一 用法
在底部框中输入要计算的表达式,会即时显示计算结果,当无结果时说明表达式输入有误。
按回车键保存该次输入、清空输入框,并显示详细结果,包括可能有的错误信息。
在底部框中按键盘上、下箭头,可以调出历史输入。
当光标在结果框内时,按回车或TAB键可使光标跳至输入框。
二 特点
即时计算。
便捷的历史回调、复制、粘贴功能。
支持64位整型运算,整数有效范围为 -9223372036854775808 至 9223372036854774784。
三 数的表示
1-整型数表示法
如何表示二、八、十六进制整数:
(1)二进制数
以0b或0B开头,后面的0、1数字之间可以用空格分隔。
0b1001 = 9
0b 1001 0110 = 0x96 = 150
0B1001 0110% = 150% = 1.5
(2)八进制数
以0开头:
010 = 8
027 + 7 = 23 + 7 = 30
(3)十六进制数
以0x或0X开头:
0x10 = 16
-0XabEF * 2 = -44015 * 2 = -88030
2-浮点数表示法
(1)小数点前后的省略表示
3.14
3. = 3.0
.14 = 0.14
(2)用科学计数法表示浮点数
3e2 = 300
3e+2 = 300
3e-2 = 0.03
3.e2 = 300
3.e+2 = 300
3.14e-2 = 0.0314
.14e+2 = 14
3-字符型表示法
支持字符常量,字符型自动转换为整型(值为该字符的ASCII码),支持C/C++转义字符。
如何得到字符的ASCII码:
'a' = 97
'A' = 65
'a' + 3 = 100
'a' - 'A' = 32
'\''=39
'\"' = '"' = 34
'\? = '?' = 63
'\\' = 92
'\a' = 7
'\b' = 8
'\f' = 12
'\n' = 10
'\r' = 13
'\t' = 9
'\v' = 11
4-量词后缀表示
一个数的后面,可以跟有倍率运算符,表示该数乘以相应的倍数,例如:
2w = 20000 (2万)
13y = 1300000000 (13亿)
4k = 4096
3% = 0.03 (百分之3)
详见“倍率运算”部分。
三 运算结果的输出格式
1-指定方法
格式: [格式前缀] 表达式
表达式前面可带有“格式前缀”(可选的),用来指定运算结果的输出格式。
“格式前缀”与C/C++的printf函数基本相同,但不支持%s或%S。
当省略格式前缀时,默认按%g方式输出。此时对较小的数按原样输出,较大的数按科学计数法输出。
2-整型的输出格式
当按二、八、十六进制输出时,是按其补码形式输出,最高位是符号位(正数为0、负数为1)。
所以此法可得到一个负数的补码表示。
(1)按二进制输出 %b或%B
%b等价与%B。
%b 12 = 0b1100
%b 0xffffffff = 0b1111 1111 1111 1111 1111 1111 1111 1111
(2)按八进制输出 %o或%O
%o等价与%O。
%o 10 = 012
(3)按十进制输出 %d
对于整型值,默认按十进制输出,此时%d可省略。
%d 123456789 = 123456789
(4)按十六进制输出 %x或%X
用%x时,字母abcdef输出为小写,用%X时,字母abcdef输出为大写。
%x 31 = 0x1f
%X 31 = 0X1F
(5)输出前的类型转换
对于浮点型值,用以上4种格式时,会先取整,再输出,因此它们可起到对结果取整的作用。
%d 12345.6789 = 12345
%d -12345.6789 = -12345
3-浮点型的输出格式
(1)按精简方式输出 %g
%g是默认的输出格式(可省略),此时不输出无意义的0,当数较大时自动按科学计数法输出。
%g 314 = 314
%g 3.14000 = 3.14
%g 3.14 * 2 = 6.28
%g 1234567 = 1.23457e+006
(2)按全部位数输出 %f
%f输出全部位,包括多余的0:
%f 3.14 * 2 = 6.280000
(3)如何指定小数点后保留位数 %m.nf
格式:%m.nf
其中,m和n都是整数,m指定总位数,n指定小数点后保留几位,如果m或n不足,则按实际位数输出。
例1:指定小数点后保留2位,其余位四舍五入:
%.2f 3.14159 = 3.14
例2:指定全部5位,且小数点后保留3位,其余位四舍五入:
%5.3f 3.14159 = 3.142
4-字符型的输出格式 %c或%C
如何得到ASCII值对应的字符(ASCII值转换为字符):
用%c,使结果(仅支持整型值)按字符形式输出即可。
%c 65 = 'A'
%C 100-3 = 'a'
5-智能大小输出格式
用于将一个较大或较小的、不易读的数,自动转换为易读的单位输出。
(1)以K、M、G、T、P、E为单位输出 %sz
%sz对结果按1024为单位换算,用于快速计算磁盘文件的大小(sz是size的简写):
当结果<1K时,原样输出,例如:
%sz 123 = 123.000000
当结果>=1K且<1M时,以K为单位输出,例如:
%sz 123456.789 = 120.563271K
当结果>=1M且<1G时,以M为单位输出,例如:
%sz 536870912 = 512.000000M
当结果>=1G且<1T时,以G为单位输出,例如:
%sz 0x100000000 = 4.000000G
当结果>=1T且<1P时,以T为单位输出,例如:
%sz 31415926535898 = 28.572619T
当结果>=1P且<1E时,以P为单位输出,例如:
%sz 10000000000000000 = 8.881784P
当结果>=1E时,以E为单位输出,例如:
%sz 10000000000000000000 = 8.673617E
(2)以W(万)、Y(亿)、WY(万亿)、YY(亿亿)、WYY(万亿亿)、YYY(亿亿亿)为单位输出 %num
%num对结果以万、亿等为单位输出,用于便捷得到一个大数的值,格式符合中国人的习惯:
当结果<1万时,原样输出,例如:
%num 8844.43 = 8844.43 (珠穆朗玛峰海拔,单位米)
当结果>=1万且<1亿时,以万为单位输出,例如:
%num 384400 = 38.44W (地球到月亮的平均距离,单位公里)
当结果>=1亿且<1万亿时,以亿为单位输出,例如:
%num 299792458 = 2.99792Y (光在真空中的速度,单位米)
当结果>=1万亿且<1亿亿时,以万亿为单位输出,例如:
已知光速每秒约三十万公里,求一光年约等于多少公里:
%num 30w * 60 * 60 * 24 * 365 = 9.4608WY (w是后缀运算符,表示前值乘以1万)
当结果>=1亿亿且<1万亿亿时,以亿亿为单位输出,例如:
国际象棋第1格放1粒米,以后每格放前一格2倍的米,一共需要多少粒米:
%num 2**64 = 1844.67YY
当结果>=1万亿亿且<1亿亿亿时,以万亿亿为单位输出,例如:
已知银河系直径为10万光年、光速每秒约三十万公里,求银河系直径约多少米:
%num 30w * 1000 * 60 * 60 * 24 * 365 * 10w = 9.4608WYY
当结果>=1亿亿亿时,以亿亿亿为单位输出,例如:
围棋盘第1格放1粒米,以后每格放前一格2倍的米,一共需要多少粒米:
%num 2**(18*18) = 3.41758e+073YYY
(3)以kilo(千)、mil(百万)、bil(十亿)、tril(万亿)为单位输出 %val
%val对结果按1000为倍率单位输出,用于便捷得到一个大数的值:
当结果<1千时,原样输出,例如:
%val 314 = 314
当结果>=1千且<1百万时,以千为单位输出,例如:
%val 11034 = 11.034kilo (马里亚纳海沟深度,单位米)
当结果>=1百万且<十亿时,以百万为单位输出,例如:
%val 1392000 = 1.392mil (太阳平均直径,单位公里)
%val 149597870 = 149.598mil (地球到太阳的平均距离,单位公里)
当结果>=十亿且<1万亿时,以十亿为单位输出,例如:
%val 1353821000 = 1.35382bil (2012年中国人口数量)
当结果>=1万亿时,以万亿为单位输出,例如:
%val 519322y = 51.9322tril (2012年国内生产总值,y是后缀运算符,表示前值乘以1亿)
6-固定比例输出格式
(1)按百分比输出 %2
%2将结果按百分比格式输出,例如:
对150种食品进行抽查,仅105种合格,合格率是多少:
%2 105/150 = 70%
(2)按万分比输出 %4
%4将结果按万分比格式输出,例如:
%4 0.00314 = 31.4%%
四 运算符与函数
1-运算符与分类
所有运算符,一律不区分大小写。
(1)一元运算符
只有1个操作数的运算符。
如果操作数是一个常数,它不需要用括号括起,并且与运算符之间不需要空格分隔,如:
sqr2 = 1.41421
cos0 = 1
当操作数是表达式时,需要用括号括起,以划分优先级:
sqr(1 + 2) = 1.73205
当操作数是一个内置常量时,它与运算符之间要有空格分隔:
cos pi = -1
对少数一元运算符,按书写习惯放在了操作数的后面,如阶乘!和百分比%
3! = 6
3% = 0.03
(2)二元运算符
需要2个操作数的运算符,如+ - * /。
(3)三元运算符
需要3个操作数的运算符,如条件运算符 ?: 。
2-内置函数
调用格式:函数名(参数1, 参数2, ...)
其中,所有函数名不区分大小写。
函数名后是用一对括号括起的参数列表,各参数间用逗号分隔。
每个参数可以是一个数值,也可以是复杂表达式。
参数个数必须符合该函数的定义,部分函数支持无穷多个参数(sum, ave, max, min)。
整个函数调用又是个表达式(值为函数的返回值),又可以参与构成其它表达式。
6-倍率运算
一个表达式的后面,可以跟有倍率运算符,表示该表达式的值乘以相应的倍数。
此法在表示一个大数或特定数时,可以减少书写量。
(1)存储单位后缀运算符 K M G T P E
4k = (480/120)k = 4*1024 = 4096
2m = (2k)k = 2*1024*1024 = 2097152
4g = (2+2)g = 4*1024*1024*1024 = 4294967296
1t = 1024*1024*1024*1024 = 1099511627776
1p = 1024*1024*1024*1024*1024 = 1125899906842624
1e = 1024*1024*1024*1024*1024*1024 = 1152921504606847000
(4)比率后缀运算符 % %%
求百分比 %
3% = 0.03
(500%)% = 5% = 0.05
500% mod 3 = 5 mod 3 = 2
求万分比 %%
12345%% = (12345%)% = 123.45% = 1.2345
六 二进制运算
1-位与 &
0b1111 & 0b1001 = 15 & 9 = 0b1001 = 9
2-位或 |
0b1100 | 0b0011 = 12 | 3 = 0b1111 = 15
3-位取反 ~
~( -2 ) = ~ 0b1111 1111 1111 1111 1111 1111 1111 1110 = 1 (32位版本)
~( -2 ) = ~ 0b1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1110 = 1 (64位版本)
4-异或 ^
0b1111 ^ 0b1001 = 15 ^ 9 = 0b0110 = 6
5-移位运算
(1)左移 <<
0b0001 << 2 = 1 << 2 = 0b0100 = 4
(2)右移 >>
0b1100 >> 2 = 12 >> 2 = 0b0011 = 3
注:这里是采用逻辑右移还是算术右移,由系统决定。
如果确定做逻辑右移,请用下面的rshl运算符;确定做算术右移,请用下面的rsha运算符。
(3)循环左移 rol
格式:data rol n
功能:返回整型值data循环左移n位后的结果。
例子:%x 0x80000000 rol 2 = 0x2 (32位版本)
%x 0x8000000000000000 rol 2 = 0x2 (64位版本)
(4)循环右移 ror
格式:data ror n
功能:返回整型值data逻辑循环右移n位后的结果。
例子:%x 0xf ror 8 = 0x0f000000 (32位版本)
%x 0xf ror 8 = 0x0f00000000000000 (64位版本)
(5)逻辑右移 rshl
格式:data rshl n
功能:无论当前系统采用何种形式的右移,返回整型值data逻辑右移n位后的结果。
逻辑右移是指,当右移n位时,高n位全补0(不考虑符号位)。
例子:%x 0xf0000000 rshl 4 = 0x0f000000
(6)算术右移 rsha
格式:data rsha n
功能:无论当前系统采用何种形式的右移,返回整型值data算术右移n位后的结果。
算术右移是指,如果符号位为1,则右移n位时,高n位全补1,否则全补0。
例子:%x 0x80000000 rsha 8 = 0xff800000 (32位版本)
%x 0x70000000 rsha 4 = 0x70000000 (32位版本)
%x 0x8000000000000000 rsha 8 = 0xff80000000000000 (64位版本)
%x 0x7000000000000000 rsha 4 = 0x700000000000000 (64位版本)
6-二进制运算函数
(1)读二进位函数 rb
格式:rb(data, start, length)
功能:对整型值data,从低位的start位开始(位数从0开始计),连续取出其高位的length位的值,返回该值。
例子:%b rb(0b1010 0101, 4, 2) = 0b10
(2)写二进位函数 wb
格式:wb(data, start, length, value)
功能:对整型值data,将其中start位开始(位数从0开始计)、其后连续的的length位的值改写为value,返回修改后的data值。
例子:%b wb(0b1010 0000, 4, 4, 0b1111) = 0b1111 0000
(3)指定位置1函数 setb
格式:setb(data, start, length)
功能:对整型值data,从低位的start位开始(位数从0开始计),其后连续的length位全部置1,返回修改后的data值。
例子:%x setb(0x0, 8, 16) = 0x00ffff00
(4)指定位清0函数 rstb
格式:rstb(data, start, length)
功能:对整型值data,从低位的start位开始(位数从0开始计),其后连续的length位全部置0,返回修改后的data值。
例子:%x rstb(0xffffffff, 8, 16) = 0xff0000ff
(5)指定位反转函数 rvsb
格式:rvsb(data, start, length)
功能:对整型值data,从低位的start位开始(位数从0开始计),其后连续的length位全部反转,返回修改后的data值。
例子:%x rvsb(0x0, 8, 16) = 0x00ffff00
十二 运算符的优先级
1-优先级顺序
运算符按优先级划分为如下14组,各个组的优先级由高到低,同一组内的优先级相同。
不清楚优先级时,请用使用括号。
(1) -(取负) !(逻辑非) ~(位取反) %(百分比) %%(万分比) !(阶乘) K M G T P E(存储单位后缀) w y wy yy wyy yyy kilo mil bil tril(数量后缀) id(arg1, arg2, ...)(函数调用)
(2) abs ceil floor lg ln log exp sqr rtd dtr sin cos tan ctan asin acos atan sinh cosh tanh intcm cmtin nmtkm kmtnm lbtkg kgtlb ftc ctf ktc ctk
(3) * / mod(求余) **(幂运算)
(4) + -
(5) << >> rshl rsha rol ror
(6) > >= < <=
(7) == !=
(8) & (按位与)
(9) ^ (按位异或)
(10) | (按位或)
(11) && (逻辑与)
(12) || (逻辑或)
(13) ?: (条件运算) :=:? (等比运算)
(14) = (赋值运算)
2-用括号指定运算顺序
1 + 2 * 3 = 1 + (2 * 3) = 7
(1 + 2) * 3 = 9
1 * (2 + 3) = 5
author:
huyansoft