ECMAScript بیت آپریشن
- ਪਿਛਲਾ ਪੰਨਾ ਇੱਕ ਤਕਰੀਬਨ ਆਪਰੇਟਰ
- ਅਗਲਾ ਪੰਨਾ ਲੌਜਿਕ ਆਪਰੇਟਰ
ਸਥਾਨਕ ਆਪਰੇਟਰ ਨੰਬਰਾਂ ਦੇ ਨੀਚੇ (ਯਾਨੀ ਨੰਬਰ ਦੇ 32 ਸਥਾਨਕਾਂ) ਦੇ ਪ੍ਰਕਿਰਿਆਕ੍ਰਮ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹਨ。
ਪੂਰਣ ਨੰਬਰ ਮੁੜ ਦੇਖੋ
ECMAScript ਦੇ ਪੂਰਣ ਨੰਬਰ ਦੋ ਪ੍ਰਕਾਰ ਹਨ, ਇੱਕ ਸਿਗਨੇਟਿਕ ਪੂਰਣ ਨੰਬਰ (ਜਿਸ ਵਿੱਚ ਧਨ ਅਤੇ ਨਕਾਰਾਤਮਕ ਨੰਬਰਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ) ਅਤੇ ਅਣਸਿਗਨੇਟਿਕ ਪੂਰਣ ਨੰਬਰ (ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਧਨਾਤਮਕ ਨੰਬਰਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ)। ECMAScript ਵਿੱਚ, ਸਾਰੇ ਪੂਰਣ ਨੰਬਰ ਦੇ ਸਿਫ਼ਰ ਸਿਗਨੇਟਿਕ ਪੂਰਣ ਨੰਬਰ ਹਨ, ਇਹ ਕੀ ਮਤਲਬ ਹੈ?
ਸਿਗਨੇਟਿਕ ਪੂਰਣ ਨੰਬਰ 31 ਸਿਫ਼ਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਤਾਂ ਕਿ ਨੰਬਰ ਦਾ ਮੁੱਲ ਨਿਰਧਾਰਿਤ ਕਰ ਸਕਣ, ਅਤੇ 32 ਵੇਂ ਸਿਫ਼ਰ ਨੂੰ ਨੰਬਰ ਦੇ ਸਿਗਨ ਨੂੰ ਪ੍ਰਤੀਨਿਧਤ ਕਰਦਾ ਹੈ, 0 ਨੂੰ ਧਨਾਤਮਕ ਨੰਬਰ ਲਈ ਅਤੇ 1 ਨੂੰ ਨਕਾਰਾਤਮਕ ਨੰਬਰ ਲਈ। ਨੰਬਰ ਦੀ ਪੱਧਰ ਮੰਗਦੇ ਹਨ -2147483648 ਤੋਂ 2147483647 ਤੱਕ।
ਸਿਫ਼ਰਾਂ ਦੇ ਬਿਨਾਰੀ ਰੂਪ ਵਿੱਚ ਸਿਗਨੇਟਿਕ ਪੂਰਣ ਨੰਬਰ ਦੋ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਸਟੋਰ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ, ਇੱਕ ਧਨ (ਧਨਾਤਮਕ) ਲਈ ਅਤੇ ਦੂਜਾ ਨਕਾਰਾਤਮਕ ਲਈ। ਧਨਾਤਮਕ ਨੰਬਰ ਸਹੀ ਬਿਨਾਰੀ ਰੂਪ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਪਹਿਲੇ 31 ਸਿਫ਼ਰਾਂ ਵਿੱਚ ਹਰ ਇੱਕ ਸਿਫ਼ਰ 2 ਦੇ ਅਧਿਕਾਰ ਨੂੰ ਪ੍ਰਤੀਨਿਧਤ ਕਰਦਾ ਹੈ, ਪਹਿਲੇ ਸਿਫ਼ਰ (ਸਿਫ਼ਰ 0) ਤੋਂ ਸ਼ੁਰੂ ਕਰਦਿਆਂ, 2 ਨੂੰ ਪ੍ਰਤੀਨਿਧਤ ਕਰਦਾ ਹੈ0ਦੂਜਾ ਸਿਫ਼ਰ (ਸਿਫ਼ਰ 1) 2 ਨੂੰ ਪ੍ਰਤੀਨਿਧਤ ਕਰਦਾ ਹੈ1ਉਹ ਸਿਫ਼ਰਾਂ ਜਿਹੜੇ ਵਰਤੇ ਨਹੀਂ ਗਏ, 0 ਨਾਲ ਭਰੇ ਜਾਂਦੇ ਹਨ, ਯਾਨੀ ਇਹ ਨਾਚਾਹੀ ਹਨ। ਉਦਾਹਰਣ ਵਜੋਂ, ਹੇਠ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ 18 ਦਾ ਪ੍ਰਦਰਸ਼ਨ:

18 ਦੀ ਬਿਨਾਰੀ ਰੂਪ-ਰੇਖਾ ਕੇਵਲ ਪਹਿਲੇ 5 ਸਿਫ਼ਰਾਂ ਨੂੰ ਵਰਤਦੀ ਹੈ, ਇਹ ਇਸ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਿਫ਼ਰ ਹਨ। ਨੰਬਰ ਨੂੰ ਬਿਨਾਰੀ ਸਟਰਿੰਗ ਵਿੱਚ ਬਦਲ ਦੇਣ ਨਾਲ, ਇਹ ਪ੍ਰਮਾਣਿਕ ਸਿਫ਼ਰ ਦੇਖ ਸਕਦੇ ਹਾਂ:
var iNum = 18; alert(iNum.toString(2)); //ਪ੍ਰਿੰਟ ਕਰੋ "10010"
ਇਹ ਕੋਡ ਕੇਵਲ "10010" ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ ਨਹੀਂ ਕਿ 18 ਦਾ 32 ਬਿਟ ਰੂਪ-ਰੇਖਾ। ਹੋਰ ਸਿਫ਼ਰਾਂ ਦਾ ਮਹੱਤਵ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਕੇਵਲ ਪਹਿਲੇ 5 ਸਿਫ਼ਰਾਂ ਨਾਲ ਇਹ ਦਸਾਰਾ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਇਹ ਬਹੁਤ ਹੀ ਸੁਲਭ ਹੈ। ਇਹ ਵੀ ਚਿੱਤਰ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ:

负数也存储为二进制代码,不过采用的形式是二进制补码。计算数字二进制补码的步骤有三步:
- 确定该数字的非负版本的二进制表示(例如,要计算 -18的二进制补码,首先要确定 18 的二进制表示)
- 求得二进制反码,即要把 0 替换为 1,把 1 替换为 0
- 在二进制反码上加 1
要确定 -18 的二进制表示,首先必须得到 18 的二进制表示,如下所示:
0000 0000 0000 0000 0000 0000 0001 0010
接下来,计算二进制反码,如下所示:
1111 1111 1111 1111 1111 1111 1110 1101
最后,在二进制反码上加 1,如下所示:
1111 1111 1111 1111 1111 1111 1110 1101 1 --------------------------------------- 1111 1111 1111 1111 1111 1111 1110 1110
因此,-18 的二进制表示即 1111 1111 1111 1111 1111 1111 1110 1110。记住,在处理有符号整数时,开发者不能访问 31 位。
有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。例如:
var iNum = -18; alert(iNum.toString(2)); //输出 "-10010"
这代码输出的是 "-10010",而非二进制补码,这是为避免访问位 31。为了简便,ECMAScript 用一种简单的方式处理整数,使得开发者不必关心它们的用法。
另一方面,无符号整数把最后一位作为另一个数位处理。在这种模式中,第 32 位不表示数字的符号,而是值 231。由于这个额外的位,无符号整数的数值范围为 0 到 4294967295。对于小于 2147483647 的整数来说,无符号整数看来与有符号整数一样,而大于 2147483647 的整数则要使用位 31(在有符号整数中,这一位总是 0)。
把无符号整数转换成字符串后,只返回它们的有效位。
ਧਿਆਨ:تمام پورا اعداد نقطہ نظر سے ذاتی طور پر ذاتی اعداد میں ذخیرہ کیے جاتے ہیں۔ صرف ECMAScript کے بیت اپریشن کاراکتر بجائی میں غیر ذاتی اعداد پیدا کرسکتا ہے۔
بیت اپریشن نماد ~ است، یہ ایکم اسکریپت میں باینری ریاضیات سے متعلق اپریشنوں میں سے کمتر ساتھ جڑا ہوا ہے۔
بیت اپریشن نماد ~ است، یہ ایکم اسکریپت میں باینری ریاضیات سے متعلق اپریشنوں میں سے کمتر ساتھ جڑا ہوا ہے۔
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ NOT ਤਿੰਨ ਪਸ਼ਕਲ ਪੜਾਵਾਂ ਦਾ ਪ੍ਰਕਿਰਿਆ ਹੈ:
- ਆਪਰੇਸ਼ਨ ਨੰਬਰ ਨੂੰ 32 ਬਿਟ ਨੰਬਰ ਬਣਾਓ
- ਬਾਈਨਰੀ ਨੰਬਰ ਨੂੰ ਇਸ ਦੇ ਬਾਈਨਰੀ ਰਿਵਰਸ ਬਣਾਓ
- ਬਾਈਨਰੀ ਨੰਬਰ ਨੂੰ ਫਲੌਟਿੰਗ ਪੁਆਇੰਟ ਬਣਾਓ
ਉਦਾਹਰਣ ਵਜੋਂ:
var iNum1 = 25; //25 ਬਰਾਬਰ 00000000000000000000000000011001 var iNum2 = ~iNum1; //ਬਦਲ ਕੇ 11111111111111111111111111100110 alert(iNum2); //ਆਉਟਪੁਟ "-26"
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ NOT ਵਾਸਤਵਿਕ ਤੌਰ 'ਤੇ ਨੰਬਰ ਦੀ ਨਕਾਰਾਤਮਕ ਕਰਨ ਦਾ ਕੰਮ ਕਰਦਾ ਹੈ, ਫਿਰ ਉਸ ਤੋਂ 1 ਘਟਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ 25 ਵਾਸਤਵਿਕ ਤੌਰ 'ਤੇ -26 ਬਣ ਜਾਂਦਾ ਹੈ। ਹੇਠ ਲਿਖੇ ਤਰੀਕੇ ਨਾਲ ਵੀ ਇਸ ਨਤੀਜੇ ਨੂੰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
var iNum1 = 25; var iNum2 = -iNum1 -1; alert(iNum2); //ਆਉਟਪੁਟ -26
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ AND
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ AND ਪਿੱਛੇ ਚਿੰਨ੍ਹ (&) ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਤੀਕਤ ਹੁੰਦਾ ਹੈ, ਇਹ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਨੰਬਰਾਂ ਦੇ ਬਾਈਨਰੀ ਰੂਪ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ। ਹਰ ਨੰਬਰ ਵਿੱਚ ਸਥਾਨਾਂ ਨੂੰ ਸਾਮਾਨਾ ਕਰਦੇ ਹੋਏ, ਇਹ ਹੇਠ ਲਿਖੇ ਨਿਯਮਾਂ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ:
第一个数字中的数位 | 第二个数字中的数位 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
ਉਦਾਹਰਣ ਵਜੋਂ, 25 ਅਤੇ 3 ਨੂੰ AND ਅਪਰੇਸ਼ਨ ਕਰਨ ਦਾ ਕੋਡ ਹੇਠ ਲਿਖਿਆ ਹੈ:
var iResult = 25 & 3; alert(iResult); //ਆਉਟਪੁਟ "1"
25 ਅਤੇ 3 ਨੂੰ AND ਅਪਰੇਸ਼ਨ ਕਰਨ ਦਾ ਨਤੀਜਾ 1 ਹੈ। ਕਿਉਂ? ਇਸ ਤਰ੍ਹਾਂ ਦੇਖੋ:
25 = 0000 0000 0000 0000 0000 0000 0001 1001 3 = 0000 0000 0000 0000 0000 0000 0000 0011 --------------------------------------------- AND = 0000 0000 0000 0000 0000 0000 0000 0001
ਸਿੱਧਾ ਦੇਖ ਸਕਦੇ ਹਨ ਕਿ 25 ਅਤੇ 3 ਵਿੱਚੋਂ ਸਿਰਫ ਇੱਕ ਨੰਬਰ ਸਥਾਨ (ਸਥਾਨ 0) ਵਿੱਚ ਹੀ 1 ਹੈ, ਇਸ ਲਈ ਹੋਰ ਸਥਾਨਾਂ 'ਤੇ ਜਿਨ੍ਹਾਂ ਦੇ ਨਤੀਜੇ ਹਨ 0, ਇਸ ਲਈ ਨਤੀਜਾ 1 ਹੈ。
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ OR
ਸਥਾਨਕ ਅਪਰੇਸ਼ਨ OR ਪਿੱਛੇ ਚਿੰਨ੍ਹ (|) ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਤੀਕਤ ਹੁੰਦਾ ਹੈ, ਇਹ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਨੰਬਰਾਂ ਦੇ ਬਾਈਨਰੀ ਰੂਪ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ। ਹਰ ਸਥਾਨ 'ਤੇ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, OR ਅਪਰੇਸ਼ਨ ਵਾਲਾ ਚਿੰਨ੍ਹ ਨੇ ਹੇਠ ਲਿਖੇ ਨਿਯਮਾਂ ਨੂੰ ਅਪਣਾਇਆ ਹੈ:
第一个数字中的数位 | 第二个数字中的数位 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
ਅਜਿਹੇ ਉਦਾਹਰਣ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਜੋ ਕਿ AND ਅਪਰੇਸ਼ਨ ਨਾਲ ਇਸਤੇਮਾਲ ਹੁੰਦਾ ਹੈ, 25 ਅਤੇ 3 ਨੂੰ OR ਅਪਰੇਸ਼ਨ ਕਰਨ ਦਾ ਕੋਡ ਹੇਠ ਲਿਖਿਆ ਹੈ:
var iResult = 25 | 3; alert(iResult); //ਆਉਟਪੁਟ "27"
25 ਅਤੇ 3 ਨੂੰ OR ਅਪਰੇਸ਼ਨ ਕਰਨ ਦਾ ਨਤੀਜਾ 27 ਹੈ:
25 = 0000 0000 0000 0000 0000 0000 0001 1001 3 = 0000 0000 0000 0000 0000 0000 0000 0011 -------------------------------------------- OR = 0000 0000 0000 0000 0000 0000 0001 1011
ਸਿੱਧਾ ਦੇਖ ਸਕਦੇ ਹਨ ਕਿ ਦੋ ਨੰਬਰਾਂ ਵਿੱਚੋਂ, ਕੁੱਲ 4 ਨੰਬਰ ਸਥਾਨ ਵਿੱਚ 1 ਹਨ, ਇਹ ਸਥਾਨ ਨਤੀਜੇ ਨੂੰ ਦਿੱਤੇ ਗਏ ਹਨ। ਬਾਈਨਰੀ ਕੋਡ 11011 ਬਰਾਬਰ 27 ਹੈ।
位运算 XOR
位运算 XOR 由符号(^)表示,当然,也是直接对二进制形式进行运算。XOR 不同于 OR,当只有一个数位存放的是 1 时,它才返回 1。真值表如下:
第一个数字中的数位 | 第二个数字中的数位 | 结果 |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
对 25 和 3 进行 XOR 运算,代码如下:
var iResult = 25 ^ 3; alert(iResult); //输出 "26"
25 和 3 进行 XOR 运算的结果是 26:
25 = 0000 0000 0000 0000 0000 0000 0001 1001 3 = 0000 0000 0000 0000 0000 0000 0000 0011 --------------------------------------------- XOR = 0000 0000 0000 0000 0000 0000 0001 1010
可以看出,在两个数字中,共有 4 个数位存放的是 1,这些数位被传递给结果。二进制代码 11010 等于 26。
左移运算
左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000):
var iOld = 2; //等于二进制 10 var iNew = iOld << 5; //等于二进制 1000000 十进制 64
ਧਿਆਨ:在左移数位时,数字右边多出 5 个空位。左移运算用 0 填充这些空位,使结果成为完整的 32 位数字。

ਧਿਆਨ:ਸਿੱਕਣ ਗਿਣਤੀ ਗਾਂਧੀ ਗਿਣਤੀ ਦਾ ਸਿੱਕਣ ਸਥਾਨ ਬਣਾ ਰਹੇ ਹੈ।ਉਦਾਹਰਣ ਵਜੋਂ, ਜੇਕਰ -2 ਨੂੰ 5 ਸ਼ਾਫਟ ਕੀਤਾ ਜਾਵੇ ਤਾਂ ਇਹ -64 ਬਣ ਜਾਵੇਗਾ, ਨਹੀਂ ਕਿ 64。“ਸਿੱਕਣ ਸਥਾਨ ਹੁਣ ਹੀ ਪਹਿਲਾਂ ਵਾਂਗ ਸਥਾਨ ਵਿੱਚ ਰਹਿ ਰਿਹਾ ਹੈ ਕੀ?” ਹਾਂ, ਲੇਕਿਨ ਇਹ ECMAScript ਬੈਕਗਰਾਊਂਡ 'ਚ ਹੀ ਹੋਇਆ ਹੈ, ਵਿਕਾਸਕਾਰ ਇਸ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਸਕਦੇ।ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਨਕਾਰਾਤਮਕ ਗਿਣਤੀ ਦੇ ਬਾਇਨਰੀ ਸਟ੍ਰਿੰਗ ਰੂਪ ਵਿੱਚ ਆਉਣ ਵਾਲੇ ਗਿਣਤੀ ਨੂੰ ਵੇਖਿਆ ਜਾਵੇਗਾ, ਉਦਾਹਰਣ ਵਜੋਂ, -2 ਇਸ ਰੂਪ 'ਚ ਦਿਸੇਗਾ -10。)
ਸਿੰਗਲ ਸਿੱਕਣ ਗਿਣਤੀ ਗਾਂਧੀ ਗਾਂਧੀ
ਸਿੰਗਲ ਸਿੱਕਣ ਗਿਣਤੀ ਗਾਂਧੀ ਗਾਂਧੀ ਨਾਲ ਪ੍ਰਦਰਸ਼ਿਤ ਹੁੰਦਾ ਹੈ (>>)。ਇਹ 32 ਬਿਟ ਗਿਣਤੀ ਦੇ ਸਾਰੇ ਬਿਟਾਂ ਨੂੰ ਸਮੁੱਚੇ ਤੌਰ 'ਤੇ ਸੱਜੇ ਤਰਫ ਸ਼ਾਫਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਸ ਗਿਣਤੀ ਦਾ ਸਿੱਕਣ (ਪਾਸਾ ਜਾਂ ਨਕਾਰਾਤਮਕ) ਬਣਾ ਰਹੇ ਹੈ।ਸਿੰਗਲ ਸਿੱਕਣ ਗਿਣਤੀ ਗਾਂਧੀ ਗਾਂਧੀ ਪਾਸੇ ਗਿਣਤੀ ਗਾਂਧੀ ਗਾਂਧੀ ਨਾਲ ਵਿਪਰੀਤ ਹੈ।ਉਦਾਹਰਣ ਵਜੋਂ, 64 ਨੂੰ 5 ਸ਼ਾਫਟ ਕਰਨ ਤਾਂ ਇਹ 2 ਬਣ ਜਾਵੇਗਾ:
var iOld = 64; //ਬਾਇਨਰੀ 1000000 var iNew = iOld >> 5; //等于二进制 10 十进制 2
同样,移动数位后会造成空位。这次,空位位于数字的左侧,但位于符号位之后。ECMAScript 用符号位的值填充这些空位,创建完整的数字,如下图所示:

ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ
ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ ਅੰਕ ਦਾ ਪ੍ਰਤੀਕ ਤਿੰਨ ਸਾਰੇ ਸੰਕੇਤਕ (>>>) ਦੇ ਰੂਪ ਵਿੱਚ ਹੈ, ਇਹ ਬੇਸਿਕ 32 ਬਿਟ ਅੰਕ ਦੇ ਸਾਰੇ ਸਥਾਨਾਂ ਨੂੰ ਸੱਦੇ ਸੱਦੇ ਕਰਦਾ ਹੈ।ਸਿਗਨ ਅੰਕ ਲਈ, ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ ਦਾ ਨਤੀਜਾ ਸਿਗਨ ਸੱਦੇ ਸੱਦੇ ਦੇ ਨਤੀਜੇ ਨਾਲ ਸਮਾਨ ਹੁੰਦਾ ਹੈ。
ਸਿਗਨ ਸੱਦੇ ਸੱਦੇ ਦੇ ਉਦਾਹਰਣ ਵਿੱਚ, 64 ਨੂੰ 5 ਬਿਟ ਸੱਦੇ ਸੱਦੇ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ 2 ਬਣ ਜਾਵੇਗਾ:
var iOld = 64; //ਬਾਇਨਰੀ 1000000 var iNew = iOld >>> 5; //ਬਾਇਨਰੀ 10 ਦਸਮੀ 2
ਨਾਗਰਿਕ ਅੰਕ ਲਈ, ਸਥਿਤੀ ਵੱਖ ਰਹਿੰਦੀ ਹੈ。
ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ ਦਾ ਨਤੀਜਾ 0 ਨਾਲ ਸਭ ਜਗ੍ਹਾਵਾਂ ਨੂੰ ਭਰ ਦਿੰਦਾ ਹੈ।ਸਿਗਨ ਅੰਕ ਲਈ, ਇਹ ਸਿਗਨ ਸੱਦੇ ਸੱਦੇ ਦੇ ਅਨਾਰਥ ਨਾਲ ਇੱਕ ਦੂਜੇ ਨਾਲ ਸਮਾਨ ਹੈ, ਪਰ ਨਾਗਰਿਕ ਅੰਕ ਲਈ ਇਹ ਇੱਕ ਨਾਗਰਿਕ ਅੰਕ ਦੇ ਰੂਪ ਵਿੱਚ ਹੈ।
ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ ਅੰਕ ਦਾ ਨਤੀਜਾ ਇੱਕ 32 ਬਿਟ ਪ੍ਰਤੀਸ਼ਤ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਨਾਗਰਿਕ ਅੰਕ ਦੇ ਬੇਸਿਕ ਸੱਦੇ ਸੱਦੇ ਦਾ ਨਤੀਜਾ ਹਰ ਸਮੇਂ ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਅੰਕ ਹੁੰਦਾ ਹੈ।ਉਦਾਹਰਣ ਵਜੋਂ, ਜੇਕਰ -64 ਨੂੰ 5 ਬਿਟ ਸੱਦੇ ਸੱਦੇ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ 134217726 ਬਣ ਜਾਵੇਗਾ।ਇਸ ਨਤੀਜੇ ਕਿਵੇਂ ਹਾਸਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ?
ਇਸ ਨੂੰ ਹੋਣ ਲਈ, ਇਸ ਨੂੰ ਬੇਸਿਕ ਰੂਪ ਵਿੱਚ ਬਦਲਣਾ ਹੋਵੇਗਾ (ਹਾਲਾਂਕਿ ਇਸ ਨੂੰ ਸਿਗਨ ਅੰਕ ਦੇ ਰੂਪ ਵਿੱਚ ਹੈ), ਇਸ ਨੂੰ ਹਾਸਲ ਕਰਨ ਲਈ ਨਿਮਨਲਿਖਤ ਕੋਡ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ:
var iUnsigned64 = -64 >>> 0;
ਫਿਰ, Number ਕਲਾਸ ਦੇ toString() ਨਾਲ ਇਸ ਦੀ ਪ੍ਰਕਾਸ਼ਿਤ ਸਹੀ ਬਿਟ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ, ਜਿਸ ਦਾ ਅਧਾਰ 2 ਹੈ:
alert(iUnsigned64.toString(2));
ਇਹ 11111111111111111111111111000000 ਬਣ ਜਾਵੇਗਾ, ਯਾਨੀ ਸਿਗਨ ਅੰਕ ਨੂੰ -64 ਦੀ ਬਾਇਨਰੀ ਕੰਪਲੀਮੈਂਟ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੇਗਾ, ਪਰ ਇਹ ਬੇਸਿਕ ਅੰਕ 4294967232 ਬਣ ਜਾਵੇਗਾ。
ਇਸ ਕਾਰਣ, ਬੇਸਿਕ ਸੱਦੇ ਆਪਰੇਟਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਖ਼ੁਸ਼ਹਾਲ ਹੋਵੇ
- ਪਿਛਲਾ ਪੰਨਾ ਇੱਕ ਤਕਰੀਬਨ ਆਪਰੇਟਰ
- ਅਗਲਾ ਪੰਨਾ ਲੌਜਿਕ ਆਪਰੇਟਰ