真值

字符编码--第2章 数的存储

我怕爱的太早我们不能终老 提交于 2020-03-01 22:45:42
第2章 数的存储 第1节 机器数 计算机中,表示数和数的符号的二进制数,叫做机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就是机器数。 机器数可用不同的码制来表示,常用的有原码、补码和反码表示法。 第2节 真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 第3节 有符号数处理 在计算机运算中,有符号数的表示需要将负数编码为二进制形式。在数学中,任意基数的负数都在最前面加上“−”符号来表示。然而在计算机硬件中,数字都以无符号的二进制形式表示,因此需要一种编码负号的方法。当前有四种方法,用于扩展二进制数字系统,来表示有符号数:原码(sign-and-magnitude),反码(ones' complement),补码(two's

javascript “||”、“&&”的灵活运用

人走茶凉 提交于 2019-12-09 20:01:32
你是否看到过这样的代码:a=a||""; 可能javascript初学者会对此感到茫然。今天就跟大家分享一下我的一些心得。 其实: a=a||"defaultValue"; 与: if(!a){ a="defaultValue"; } 和: if(a==null||a==""||a==undefined){ a="defaultValue"; } 是等价的! 为了弄清这个问题,首先我们必须了解一个问题:javascript中数据类型在转换为bool类型时发生了什么。 在javascript中,数据类型可以分为“真值”和“假值”。顾名思义,真值转换为bool时值为true;假值转换为bool时值为false。下表罗列了一些常见的数据类型转换为bool时的值: 数据类型 转换为bool后的值 null FALSE undefined FALSE Object TRUE function TRUE 0 FALSE 1 TRUE 0、1之外的数字 TRUE 字符串 TRUE ""(空字符串) FALSE 在if表达式中,javascript首先将条件表达式转换为bool类型,表达式为真值则执行if中的逻辑,否则跳过。 于是有了: if(!a){ a="defaultValue"; } 下面我们再来看“&&”、“||”两个表达式。 由于javascript是弱类型语言

C Primer Plus 第6章 C控制语句:循环 6.3 关系运算符和表达式

牧云@^-^@ 提交于 2019-12-04 08:53:34
关系运算符 运算符 含义 < 小于 <= 小于等于 == 等于 >= 大于等于 > 大于 != 不等于 注意:关系表达式也可以用于字符的比较。例:ch!='$';进行比较时使用的是机器的字符代码(我们假定为ASCII)。然而不能使用关系运算符来比较字符串。 关系运算符也可以用来比较浮点数。但要小心,在浮点数比较中只能使用>和<。原因在于传入误差可能导致两个逻辑上相等的数不相等。例如,3和1/3的乘积应该是1.0.但是如果您使用6位小数来表示1/3,乘积就是.999999而不是1.使用在math.h头文件中声明的fabs()函数可以方便的进行浮点数判断。这个函数返回一个浮点数的绝对值(即没有代数符号的值)。 例如,您可以使用类似程序清单6.5的方法来判断一个数是否接近一个想要的结果。 //cmpflt.c -- 浮点数比较 #include <math.h> #include <stdio.h> int main(void) { const double ANSWER = 3.14159; double response; printf("What is the value of pi?\n"); scanf("%lf",&response); while(fabs(response-ANSWER)>0.0001) { printf("Try again!"); scanf("%lf