精华内容
下载资源
问答
  • 适合软硬件开发人员的计算器二进制运算强大,支持64位。 采用表达式驱动,输入表达式便即时显示结果,抛弃传统计算器繁琐的按钮,表达式可复制粘贴、回调使用,可以任意复杂组合。 支持二进制串直接运算,如0b1101...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    专为程序员打造的计算器二进制运算强大,支持64位。 采用表达式驱动,输入表达式便即时显示结果,抛弃传统计算器繁琐的按钮,表达式可粘贴或回调重复使用。 支持二进制串直接运算,如0b1101 & 0b0011= 0b0001。 ...
  • (())let是等效的 arithmetic expression type [是等效的 source.... 其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,...linux shell 不同进制数据转换(二进制,八进制,十六进制,base64) s...

    (())与let是等效的 arithmetic expression

    type 与[是等效的

    source与.是等效的

     

    其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,但是可以使用“bc”这个高精度的计算器工具来帮助,另外,也可以在Bash中调用“awk”脚本来处理浮点运算。

    linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)

    shell可以在不调用第3方命令,表示不同进制数据。这里总结以下表示方法。shell 脚本默认数值是由10 进制数处理,除非这个数字以某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。如:
    以 0 开头就是 8 进制.以0x 开头就是16 进制数.使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值:2-64. 
    
    adj
    octal    八进制的
    decimal    十进制的
    hexadecimal  十六进制的
    ((表达式)),(())里面可以是任意数据表达式。如果前面加入:”$”可以读取计算结果。 其它进制转为10进制 [root@
    250-shiyan prog]# ((num=2#0111011));echo $num 59 [root@250-shiyan prog]# ((num=0123));echo $num 83 [root@250-shiyan prog]# ((num=0x1e));echo $num 30 [root@250-shiyan prog]# ((num=8#123));echo $num 83 0-9a-f [root@250-shiyan prog]# ((num=16#56c));echo $num 1388 0-9a-zA-Z [root@250-shiyan prog]# ((num=64#Z));echo $num 61 [root@250-shiyan prog]# ((num=64#_));echo $num 63 10进制转其它进制 这里使用到:bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc [root@250-shiyan prog]# echo "obase=2;8"|bc 1000 [root@250-shiyan prog]# echo "obase=8;9"|bc 11 shell内置各种进制表示方法非常简单。记得base#number 即可。这里记得赋值时候用(())符号。不能直接用=号了。=号没有值类型。默认将后面变成字符串了。如: 0开头已经失去了意义了。 可以通过定义符:let达到(()) 运算效果。 [root@250-shiyan prog]# num=0123;echo $num 0123 [root@250-shiyan prog]# let num=0123;echo $num 83

     

    echo "$(echo 'scale=2;40*100/90' | bc)%"

    [root@84-monitor newmonitor]# ssh 192.168.2.109 echo "`echo "scale=3;2*3/7"|bc`"

    使用awk来处理浮点计算和浮点数比较
    #!/bin/bash # author: Jay <smile665@gmail.com> # some examples for playing with floating point number. # basic usage of 'bc' tool in Bash. a=3.33 b=3.3 c=$(echo "$a + $b" | bc) d=$(echo "$a * $b" | bc) e=$(echo "scale=5; $a / $b" | bc) echo "c=a+b=$a+$b=$c" echo "d=a*b=$a*$b=$d" echo "e=a/b=$a/$b=$e" # "-l" parameter for 'bc' means using math library. pi=$(echo "scale=10; 4*a(1)" | bc -l) s=$(echo "s($pi/6)" | bc -l) echo "pi=$pi" echo "s=sin(pi/6)=$s" # use more options of 'bc' tool r=$(echo 'ibase=10;obase=2; 15+16' | bc) echo "binary of (15+16) is $r" # comparison for floating point numbers using 'bc' big=100 small=99.9 if [ $(echo "$big > $small" | bc) -eq 1 ]; then echo "$big is bigger than $small" fi # deal with floating point numbers with 'awk' language echo $(awk -v x=10 -v y=2.5 'BEGIN {printf "10/2.5=%.2f\n",x/y}') v=$(echo $big $small | awk '{ printf "%0.8f\n" ,$1/$2}') echo "$big / $small = $v" echo $big $small | awk '{if($1>$2) {printf"%f > %f\n",$1,$2} else {printf"%f <%f\n",$1,$2}}' master@jay-linux:~/workspace/mygit/shell/sh2012$ ./floating-point.sh c=a+b=3.33+3.3=6.63 d=a*b=3.33*3.3=10.98 e=a/b=3.33/3.3=1.00909 pi=3.1415926532 s=sin(pi/6)=.49999999994373819220 binary of (15+16) is 11111 100 is bigger than 99.9 10/2.5=4.00 100 / 99.9 = 1.00100100 100.000000 > 99.900000 master@jay-linux:~/workspace/mygit/shell/sh2012$ cat temp.bc 3+8 3/8 scale=2; 3/8 master@jay-linux:~/workspace/mygit/shell/sh2012$ bc -q temp.bc 11 0 .37

     

     

    [root@250-shiyan sh]# bash let
    2.22
    [root@250-shiyan sh]# cat let
    var=2
    i=`echo "scale=2;$var*1.11"|bc`
    echo $i

    shell程序中的操作默认都是字符串操作
    在bash中只提供了整数运算,一般shell通过let和expr这两个指令来实现。
    使用格式为: let "x=$x+1" 或者x=`expr $x+1`,同时,在shell中,也可以通过((表达式))。使用格式为:((x=$x+1))
    shell脚本只提供整数算术运算(三种方式)—((表达式))、let "表达式"、value=`expr 表达式右边`

    整数运算
    将需要运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开。
    这其中的let可以用(())代替,let "j=i*6+2″等价于((j=i*6+2)), 就像很多的循环中用法一样
    注意:let必须是完整的算术表达式,即有等号两边
    (())、expr 可以只有等号右边的计算,由$((...))、$(expr ...)、`expr ...` 查看返回结果
    let表达式内变量不用加$
    let中运算符与操作数不能有空格,expr中运算符与操作数必须有空格

    (( expression ))与let EXPRESSION是等效的

    浮点运算
    var=1
    var=`echo "scale=1;$var*2.0"|bc`  bc预设输出整数,用scale 指定小数点下位数
    echo $var

    output:
    2.0

    bc支持除位运算以外的所有运算。

    另外一个支持浮点运算的方法是awk:
    var=1
    var=`echo "$var 1"|awk '{printf("%g",$1+$2)}'`
    echo $var

    output:
    2

    $ c=$(awk 'BEGIN{print 7.01*5-4.01 }')
    $ echo $c

    1:在shell 中$() 与 ``等效。执行中间包含的命令语句,返回执行结果。
    2:从效率来说let==(()) > expr > bc。let和(())运行是内建命令,使用相同的算法。
    3:let 和 expr 的运算是整数运算,不包括浮点预算。
    4:expr和bc是外部程序,expr的体积几乎等于bc的1/3,执行一次装入内存所消耗的时间就不一样。
    5:从运算能力来说,bc排第一位。


    let命令具有返回值.当计算结果(若有多个表达式时,以最后一个为准)为0时,
    返回值为1,否则为0.
    当表达式中含有shell的特殊字符(如|)时,需要用引用符('或")将其引用起来.
    使用let时还需要注意的时,对于let x+y这样的式子,shell虽然计算了x+y的值
    但却将结果丢弃,若不想这样,可以使用let sum=x+y将x+y的结果保存在变量sum中
    另外还可以使用((和))操作符取代let命令,而且这样的话,还可以省去对算术
    表达式的引用,如果想返回表达式的值,则需用$(())的格式.

    if的条件中,“=”用于比较字符串;“-eq”用于比较整型数。

    Bash shell 的算术运算有四种方式:
    1:使用 expr 外部程式

    加法 r=`expr 4 + 5`
    echo $r
    注意! '4' '+' '5' 这三者之间要有空白
    r=`expr 4 * 5` #错误
    乘法 r=`expr 4 \* 5`

    2:使用 $(( ))
    r=$(( 4 + 5 ))
    echo $r

    3:使用 $[ ]

    r=$[ 4 + 5 ]
    echo $r

    乘法
    r=`expr 4 \* 5`
    r=$(( 4 * 5 ))
    r=$[ 4 * 5 ]
    echo $r

    除法
    r=`expr 40 / 5`
    r=$(( 40 / 5 ))
    r=$[ 40 / 5 ]
    echo $r

    减法
    r=`expr 40 - 5`
    r=$(( 40 - 5 ))
    r=$[ 40 - 5 ]
    echo $r

    求余数
    r=$[ 100 % 43 ]
    echo $r

    乘幂 (如 2 的 3 次方)
    r=$(( 2 ** 3 ))
    r=$[ 2 ** 3 ]
    echo $r
    注:expr 沒有乘幂

    4:使用let 命令
    加法:
    n=10
    let n=n+1
    echo $n #n=11

    乘法:
    let m=n*10
    echo $m

    除法:
    let r=m/10
    echo $r


    求余数:
    let r=m%7
    echo $r


    乘冪:
    let r=m**2
    echo $r

    虽然Bash shell 有四种算术运算方法,但并不是每一种都是跨平台的,建议使用expr。
    另外,我们在 script 中经常有加1操作,以下四法皆可:
    m=$[ m + 1]
    m=`expr $m + 1`
    m=$(($m + 1))
    let m=m+1

    转载于:https://www.cnblogs.com/createyuan/p/4193167.html

    展开全文
  • 用于所有设备的二进制运算的便捷计算器。 :mobile_phone: :laptop: :desktop_computer: 随意使用计算器来教授数字系统。 如果您有建议或发现错误,可以在GitHub上我联系或提交更改。 我之所以建立此计算器,是...
  • 二进制

    2021-01-10 15:09:49
    来源:牛客网 题目描述 scimoon 有一个坏掉的计算器,这个计算器仅接受 0\sim 2^{20}-10∼2 20 −1 的数 这个计算器只支持一种操作,举个例子,输入一个数 x,这个数会按顺序进行 n 次操作,在...做 与运算 如果 op_i=2

    链接:https://ac.nowcoder.com/acm/contest/8564/B
    来源:牛客网

    题目描述
    scimoon 有一个坏掉的计算器,这个计算器仅接受 0\sim 2^{20}-10∼2
    20
    −1 的数

    这个计算器只支持一种操作,举个例子,输入一个数 x,这个数会按顺序进行 n 次操作,在第 i 次操作中,有一个操作符 op_iop
    i

    和一个数 a_ia
    i

    如果 op_i=1op
    i

    =1 表示这次操作是将数 x 与 a_ia
    i

    做 与运算

    如果 op_i=2op
    i

    =2 表示这次操作是将数 x 与 a_ia
    i

    做 或运算

    如果 op_i=3op
    i

    =3 表示这次操作是将数 x 与 a_ia
    i

    做 异或运算

    操作过后 x 将会变为运算的结果

    scimoon 觉得这个计算器非常地慢,于是他想对这 n 个运算做一些简化,这个艰巨的任务交给了你

    具体而言,你的任务是:用不超过 5 次上面的操作,使得对于任何 0\le x\le 2^{20}-10≤x≤2
    20
    −1,你的操作的输出与计算器的输出一致

    可以证明必然存在解

    可能存在多组解,你只需要输出一组可能的解即可
    输入描述:
    第一行一个整数 n,表示计算器的操作次数

    接下来 n 行,每行两个整数 op 与 a ,按顺序描述了每次操作

    输出描述:
    第一行一个 m,表示你的操作次数

    你必须保证你输出的 m\le 5m≤5

    接下来 m 行每行仿照输入中 op\ aop a 的格式输出每次操作
    示例1
    输入
    复制
    1
    1 14514
    输出
    复制
    1
    1 14514
    备注:
    n\le 5\times 10^5,1\le op\le 3,0\le a\le 2^{20}-1n≤5×10
    5
    ,1≤op≤3,0≤a≤2
    20
    −1

    我们发现,与运算,或运算,异或运算都是按照位来算的,所以每一位在经历过那么多次运算后,对于具体的每一位,只需要看每一位是如何变化的,然后针对这一位进行具体的操作

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 5e5 + 10;
    
    int op[N], a[N];
    
    int main(){
    	int n;
    	scanf("%d", &n);
    	
    	for (int i = 1; i <= n; i ++){
    		scanf("%d%d", &op[i], &a[i]);
    	}
    	
    	int AND = (1 << 20) - 1;
    	int OR = 0;
    	int XOR = 0;
    	//cout << AND << endl;
    	for (int i = 0; i < 20; i ++){
    	    int x = 0, y = 1;
    		for (int j = 1; j <= n; j ++){
    			int temp = a[j] >> i & 1;
    			if (op[j] == 1){
    				x &= temp;
    				y &= temp;	
    			}
    			else if (op[j] == 2){
    				x |= temp;
    				y |= temp;
    			}
    			else if (op[j] == 3){
    				x ^= temp;
    				y ^= temp;
    			}
    		}
    		
    	//	cout << x << "------" << y << endl;
    	//	cout << i << endl;
    		if (x == 0 && y == 0)    AND -= (1 << i);
    	//	cout << AND << endl;
    		if (x == 1 && y == 1)    OR += (1 << i);
    		if (x == 1 && y == 0)    XOR += (1 << i);	
    	}
    	
    	int cnt = 0;
    	if (AND != (1 << 20 - 1))   cnt ++;
    	if (OR != 0)   cnt ++;
    	if (XOR != 0)  cnt ++;
    	
    	cout << cnt << endl;
    	
    	if (AND != (1 << 20 - 1))   cout << "1 " << AND << endl;
    	if (OR != 0)   cout << "2 "<< OR << endl;
    	if (XOR != 0)  cout << "3 "<< XOR << endl;
    	
    	return 0;
    } 
    
    展开全文
  • 实现算术加、减、乘、除等基本运算; 实现三角函数的运算、对数运算、指数运算、阶乘等科学运算;...能实现基础进制转换(二进制、八进制、十进制、十六进制); 实现计算表达式及结果的保存,便于用户检查计算结果;
  • (1)从上节可知,对寄存器特定位进行置1或者清0或者取反,关键性的难点在于事先构建一个特别的数,这个数和原来的值进行位、位或、位异或等操作,即可达到我们对寄存器操作的要求。 (2)解法1:用工具软件或者...

    2.3.1寄存器位操作经常需要特定位给特定值

    (1)从上节可知,对寄存器特定位进行置1或者清0或者取反,关键性的难点在于事先构建一个特别的数,这个数和原来的值进行位与、位或、位异或等操作,即可达到我们对寄存器操作的要求。
    (2)解法1:用工具软件或者计算器或者自己大脑计算,直接给出完整的32位特定数;
    优势:可以完成工作,难度也不大,操作起来不算太麻烦;
    劣势:依赖工具,而且不直观,读程序的人不容易理解;
    评价:凑活能用,但是不好用,应该被更好用的方法替代;
    (3)解法2:自己写代码用位操作符号(主要是移位和位取反)来构建这个特定的二进制数。

    2.3.2使用移位获取特定位为1的二进制数

    (1)最简单的就是用移位来获取一个特定位为1的二进制数。譬如我们需要一个bit3——bit7为1(隐含意思就是其它位全部为0)的二进制数,可以这样(0x1f《3)
    (2)更难一点的要求:获取bit3——bit7为1,同时bit23——bit25为1,其余位为0的数:((0x1f《3) | (0x7《23))
    上面表达式的含义:位或说明这个数字由2部分组成,第一部分中左移3位说明第一部分从bit3开始;
    第一部分数字为0x1f说明这部分有5位,所以第一部分其实就是bit3——bit7;
    第二部分的解读方法同样的,可知第二部分其实就是bit23——bit25;
    所以两部分结合起来,这个数的特点就是:bit3——bit7和bit23——bit25为1,其余位全部为0.

    2.3.3再结合位取反获取特定位为0的二进制数

    (1)这次我们要获取bit4——bit10为0,其余位全部为1的数,怎么做?
    (2)利用上面讲的方法就可以:(0xf《0)|(0x1fffff《11),但是问题是:连续为1的位数太多了,这个数字本身就很难构造,所以这种方法的优势损失掉了;
    (3)这种特定位(比较少)为0而其余位(大部分)为1的数,不适合用很多个连续1左移的方式来构造,适合左移加位取反的方式来构造。
    (1)思路是:先试图构造出这个数的位相反数,再取反得到这个数。(譬如本例中要构造的数bit4——bit10为0其余位为1,那我们就先构造一个bit4——bit10为1,其余位为0的数,然后对这个数按位取反即可):~(0x7f《4)

    2.3.4总结:位与、位或结合特定二进制数即可完成寄存器位操作需求

    (1)如果你要的这个数比较少位为1,大部分位为0,则可以通过连续很多个1左移n位得到;
    (2)如果你想要的数是少数位为0,大部分为1,则可以通过先构建其位反数,然后再位取反来得到。
    (3)如果你想要的数中连续1(连续0)的部分不止1个,那么可以通过多段分别构造,然后再彼此位或即可。这时候因为参与位或运算的各个数为1的位是不重复的,所以这时候的位或其实相当于几个数的叠加。

    展开全文
  • (1)从上节可知,对寄存器特定位进行置1或者清0或者取反,关键性的难点在于要事先构建一个特别的数,这个数和原来的值进行位、位或、位异或等操作,即可达到我们对寄存器操作的要求。 (2)解法1:用工具软件或者...
  • JAVA综合程序设计分析 一 题目 用java语言编写科学计算器要求完成加减乘除以及基本函数处理还有数的进制转换 二 摘要 本计算器可以进行简单的四则运算加减乘除但仅限于十进制下还可以进行二进制八进制十进制之间的...
  • toBin:输入十进制,输出二进制 toDec:$输入十六进制,输出十进制 toDec:b输入二进制,输出十进制 数学公式: mod:AmodB(得余数。输入A、B为十进 制,输出十进制) div:AdivB(A整除B,得整数。输入A、 B为十...
  • 程序员计算器

    2018-10-16 09:24:35
    程序员使用的计算器,二进制,十进制,十六进制,或非运算
  • 计算器源代码

    2018-02-06 16:16:03
    通过stc51单片机实现计算器功能,其包括十进制加减乘除运算以及十六进制与二进制的互相转换
  • 文章目录1. 进制是什么2. 进制的转换3. 计算机自己的想法4. C语言中的进制 1. 进制是什么 进制也就是进位计数制 基数权: ...运算简单:十进制数相比,二进制数的运算规则要简单 适合逻辑: 0 和 1
  • 进制转换工具

    2012-10-16 11:07:56
    子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 附加工具: .ASCII表:0-127的ASCII表,以2、8、10、16及HTML分别表示 .简化计算器:四则运算、乘方、开方、阶乘。大部分功能支持...
  • ASCII及进制转换

    2009-07-24 16:28:19
    进制转换:10<-->2,8,16 及 2<-->16的相互转换,支持小数(适合计算机等级考试基础... 子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 简单计算器:简单四则运算,支持小键盘直接计算
  • ASCII及进制转换器

    2015-09-12 14:53:56
    子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 附加工具: .ASCII表:0-127的ASCII表,以2、8、10、16及HTML分别表示 .简化计算器:四则运算、乘方、开方、阶乘。大部分功能...
  • ACSII 及进制转换工具

    2012-03-27 11:26:37
    子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 附加工具: .ASCII表:0-127的ASCII表,以2、8、10、16及HTML分别表示 .简化计算器:四则运算、乘方、开方、阶乘。大部分功能支持...
  • ASCII及进制转换 V4.0

    2012-12-12 10:37:13
    子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 附加工具: .ASCII表:0-127的ASCII表,以2、8、10、16及HTML分别表示 .简化计算器:四则运算、乘方、开方、阶乘。大部分功能支持...
  • ASCII及十六进制转换工具《建》

    热门讨论 2010-09-11 10:39:41
    (2)将二进制形式的IP地址子网掩码做“运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码IP地址做“运算,将答案化为十进制便得到主机地址...
  • python位运算

    2018-03-05 14:35:00
    可以直接用电脑自带的计算器将十进制转换为二进制,然后转换为十进制操作 与运算 &  与运算就是比较a和b的二进制如果位数都为1则算为1,如果不想同或都为0则算为0。然后再把答案的二进制转为10进制。  或...
  • 科学计算器 计算器

    热门讨论 2008-09-11 23:08:01
    、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆 佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换计算结果可选择是否自动存入WINDOWS剪 贴板,并自动输入在其它程序窗口的...
  • java计算器设计报告

    2014-06-23 21:16:29
    计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求余、求倒数,还可以实现二进制与十进制之间的转换。通过本课程设计使学生能够较全面的掌握面向对象程序设计...
  • 二进制运算在日常生活中并不常见,但在C语言编程中是不可避免的,二进制运算中有&(按位),|(按位或),^(按位异或...但是这种方法有局限性,就是不能处理负数,因为负数在计算器中的二进制是以补码的形式存
  • 用Java做的简单计算器

    2011-02-20 21:11:46
    能实现二进制与十进制的相互转换。 1.4要解决的问题 首先,要满足系统的简单需求,实现应有的功能;第二,在对鼠标事件响应的功能上再增加对键盘的响应;第三,对程序中可能出现的错误能进行捕获。
  • 8086计算器

    2020-10-12 15:13:26
    指令和数据是应用上的概念,在内存或磁盘上没有大的差别都是二进制的数据 同一个二进制可能是数据,也可能是指令 存储单元:从零开始顺序编号,由存储器划分而成 CPU对存储器的读写 要求三类信息的交互: A存储单元...
  • 程序员计算器小技巧

    2021-03-26 14:27:28
    BIN:二进制,注意这里的二进制二进制补码形式 每输入一个数,进制转换会自动进行 QWORD:四字,64位 DWORD:双字,32位 WORD:字,16位 BYTE:字节,8位 Lsh:左移 Rsh:右移 点击↑按钮,Lsh Rsh变作RoL RoR,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 226
精华内容 90
关键字:

二进制与运算计算器