#刘彰劝学#
位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。ECMAScrint中的所有数
值都以IEEE-75464位格式存储,但位操作符并不直接操作64位的值。而是先将64位的值转换成32位的整数,然后执行操作,最后再将结果转换回64位。对于开发人员来说,由于64位存储格式是透明的,因此整个过程就像是只存在32位的整数一样。
对于有符号的整数,32位中的前31位用于表示整数的值。第32位用于表示数值的符号:0表示正数,1表示负数。这个表示符号的位叫做符号位,符号位的值决定了其他位数值的格式。其中,正数以纯二讲制格式存储,31位中的每一位都表示2的。第一位(叫做位0)表示2°,第二位表示21,以此
类推。没有用到的位以0填充,即忽略不计。例如,数值18的二进制表示是
00000000000000000000000000010010,或者更简洁的10010。这是5个有效位,这5位本身就决定了实
际的值(如图3-1所示)。
负数同样以二进制码存储,但使用的格式是二进制补码。计算一个数值的二进制补码,需要经过下
列3个步骤:
(1)求这个数值绝对值的二进制码(例如,要求-18的二进制补码,先求18的二进制码);
(2)求二进制反码,即将0替换为1,将1替换为0;
(3)得到的二进制反码加1。
要根据这3个步骤求得-18的二进制码,首先就要求得18的二进制码,即:
00000000 0000 000000000000 00010010
然后,求其二进制反码,即0和1互换:
1111 1111 1111 1111 1111 1111 1110 1101
最后,二进制反码加1:
1111 1111 1111 1111 1111 1111 1110 1101
1111 1111 1111 1111 1111 1111 1110 1110
这样,就求得了-18的二讲制表示,即111
符号整数时,是不能访问位31的。
ECMAScript会尽力向我们隐藏所有这些信息。换句话说,在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上了一个负号。如下面的例子所示:
var num =-18;
alert (num.toString(2));
要把数值-18转换成二进制字符串时,得到的结果是”-10010”。这说明转换过程理解了二进制补码并将其以更合乎逻辑的形式展示了出来。
默认情况下,ECMAScript中的所有整数都是有符号整数。不过,当然也存在无符号整数。对于无符号整数来说,第32位不再表示符号,因为无符号整数只能是正数。而且,无符号整数的值可以更大,因为多出的一位不再表示符号,可以用来表示数值。
在ECMAScript中,当对数值应用位操作符时,后台会发生如下转换过程:64位的数值被转换成32位数值,然后执行位操作,最后再将32位的结果转换回64位数值。这样,表面上看起来就好像是在操作32位数值,就跟在其他语言中以类似方式执行二进制操作一样。但这个转换过程也导致了一个严重的副效应,即在对特殊的NaN和Tnfinitv值应用位操作时,这两个值都会被当成O来外理
如果对非数值应用位操作符,会先使用Number()函数将该值转换为一个数值(自动完成),然后再应用位操作。得到的结果将是一个数值。
1.按位非(NOT)
按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。按位非是
位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。ECMAScrint中的所有数
值都以IEEE-75464位格式存储,但位操作符并不直接操作64位的值。而是先将64位的值转换成32位的整数,然后执行操作,最后再将结果转换回64位。对于开发人员来说,由于64位存储格式是透明的,因此整个过程就像是只存在32位的整数一样。
对于有符号的整数,32位中的前31位用于表示整数的值。第32位用于表示数值的符号:0表示正数,1表示负数。这个表示符号的位叫做符号位,符号位的值决定了其他位数值的格式。其中,正数以纯二讲制格式存储,31位中的每一位都表示2的。第一位(叫做位0)表示2°,第二位表示21,以此
类推。没有用到的位以0填充,即忽略不计。例如,数值18的二进制表示是
00000000000000000000000000010010,或者更简洁的10010。这是5个有效位,这5位本身就决定了实
际的值(如图3-1所示)。
负数同样以二进制码存储,但使用的格式是二进制补码。计算一个数值的二进制补码,需要经过下
列3个步骤:
(1)求这个数值绝对值的二进制码(例如,要求-18的二进制补码,先求18的二进制码);
(2)求二进制反码,即将0替换为1,将1替换为0;
(3)得到的二进制反码加1。
要根据这3个步骤求得-18的二进制码,首先就要求得18的二进制码,即:
00000000 0000 000000000000 00010010
然后,求其二进制反码,即0和1互换:
1111 1111 1111 1111 1111 1111 1110 1101
最后,二进制反码加1:
1111 1111 1111 1111 1111 1111 1110 1101
1111 1111 1111 1111 1111 1111 1110 1110
这样,就求得了-18的二讲制表示,即111
符号整数时,是不能访问位31的。
ECMAScript会尽力向我们隐藏所有这些信息。换句话说,在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上了一个负号。如下面的例子所示:
var num =-18;
alert (num.toString(2));
要把数值-18转换成二进制字符串时,得到的结果是”-10010”。这说明转换过程理解了二进制补码并将其以更合乎逻辑的形式展示了出来。
默认情况下,ECMAScript中的所有整数都是有符号整数。不过,当然也存在无符号整数。对于无符号整数来说,第32位不再表示符号,因为无符号整数只能是正数。而且,无符号整数的值可以更大,因为多出的一位不再表示符号,可以用来表示数值。
在ECMAScript中,当对数值应用位操作符时,后台会发生如下转换过程:64位的数值被转换成32位数值,然后执行位操作,最后再将32位的结果转换回64位数值。这样,表面上看起来就好像是在操作32位数值,就跟在其他语言中以类似方式执行二进制操作一样。但这个转换过程也导致了一个严重的副效应,即在对特殊的NaN和Tnfinitv值应用位操作时,这两个值都会被当成O来外理
如果对非数值应用位操作符,会先使用Number()函数将该值转换为一个数值(自动完成),然后再应用位操作。得到的结果将是一个数值。
1.按位非(NOT)
按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。按位非是
#好物分享#
家里刚装修完异味重?害怕甲醛?
连续雨天衣服干不了?家里都有异味了?
-
欧井专业除湿净化一体机来了!
它有着22L的除湿量,一天可以除去88瓶250ml矿泉水的湿度。
它应用了纳米水离子的奇妙净化能力,能够有效的去除家里的霉菌味、甲醛味、以及其他异味。
它配置着强大的内核,百年品牌松下的转子压缩机,让除湿能快人一步,分分钟收获干爽体验。
-
这款除湿机中的净化战斗机在小米有品上架啦!
而且新品上市,还能优享超低价哦!!
市场价是1459,在新上市的一周之内只要1369元!!
https://t.cn/A6xkpLYe$SearchFilter$1.search_list.2.27876622&last_scmv2=3001.21.1:zero-3:zero-4:zero-5:zero-6:zero-7:zero-8:zero-19:zero.0.0&scmv2_num=0#!
家里刚装修完异味重?害怕甲醛?
连续雨天衣服干不了?家里都有异味了?
-
欧井专业除湿净化一体机来了!
它有着22L的除湿量,一天可以除去88瓶250ml矿泉水的湿度。
它应用了纳米水离子的奇妙净化能力,能够有效的去除家里的霉菌味、甲醛味、以及其他异味。
它配置着强大的内核,百年品牌松下的转子压缩机,让除湿能快人一步,分分钟收获干爽体验。
-
这款除湿机中的净化战斗机在小米有品上架啦!
而且新品上市,还能优享超低价哦!!
市场价是1459,在新上市的一周之内只要1369元!!
https://t.cn/A6xkpLYe$SearchFilter$1.search_list.2.27876622&last_scmv2=3001.21.1:zero-3:zero-4:zero-5:zero-6:zero-7:zero-8:zero-19:zero.0.0&scmv2_num=0#!
python 题库
二.int(input())
1.照猫画虎
n=int(input())
sum=1
for i in range(1,n+1)
sum=sum*i
print(sum)
2.2的n次方
n=int(input())
print(2**n)
3.今年多少天
year=int(input())
if year%400==0or year%4==0and year %100!=0:
print(366)
else:
print(365)
4.判断奇偶
num=int(input())
if (num%2)!=0
print(“odd”)
else:
print(“even”)
5.说句心里话
N=int(input(“”))
st1=“...”
st2=“...”
(p1)
二.int(input())
1.照猫画虎
n=int(input())
sum=1
for i in range(1,n+1)
sum=sum*i
print(sum)
2.2的n次方
n=int(input())
print(2**n)
3.今年多少天
year=int(input())
if year%400==0or year%4==0and year %100!=0:
print(366)
else:
print(365)
4.判断奇偶
num=int(input())
if (num%2)!=0
print(“odd”)
else:
print(“even”)
5.说句心里话
N=int(input(“”))
st1=“...”
st2=“...”
(p1)
✋热门推荐