شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


JavaScript Bitwise Operations


عوامل تشغيل JavaScript Bitwise

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

أمثلة

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

يستخدم JavaScript معاملات Bitwise 32 بت

يخزن JavaScript الأرقام كأرقام فاصلة عائمة 64 بت ، ولكن يتم تنفيذ جميع العمليات التي تتم باستخدام 32 بت على أرقام ثنائية.

قبل تنفيذ عملية بت ، يحول JavaScript الأرقام إلى 32 بت الأعداد الصحيحة الموقعة.

بعد تنفيذ عملية البت ، يتم تحويل النتيجة مرة أخرى إلى أرقام جافا سكريبت 64 بت.

تستخدم الأمثلة أعلاه 4 بت أرقام ثنائية غير موقعة. بسبب هذا ~ 5 إرجاع 10.

نظرًا لأن JavaScript يستخدم 32 بت أعدادًا صحيحة موقعة ، فلن يقوم بإرجاع 10. سيعود -6.

00000000000000000000000000000101 (5)

111111111111111111111111111010 (~ 5 = -6)

يستخدم عدد صحيح بعلامة البت الموجود في أقصى اليسار كعلامة ناقص.



أحادي المعامل AND

عندما يتم تنفيذ AND بطريقة بت على زوج من البتات ، فإنها تُرجع 1 إذا كانت كلتا البتتين 1.

مثال بت واحد:
عمليةنتيجة
0 & 00
0 & 10
1 و 00
1 & 11
4 بت مثال:
عمليةنتيجة
1111 و 00000000
1111 و 00010001
1111 و 00100010
1111 و 01000100

أحادي المعامل OR

عندما يتم تنفيذ OR على مستوى بت على زوج من البتات ، فإنها تُرجع 1 إذا كانت إحدى البتات 1:

مثال بت واحد:
عمليةنتيجة
0 | 00
0 | 1
1 | 01
1 | 11
4 بت مثال:
عمليةنتيجة
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitwise XOR

عندما يتم تنفيذ XOR بت على زوج من البتات ، فإنها تُرجع 1 إذا كانت البتات مختلفة:

مثال بت واحد:
عمليةنتيجة
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
4 بت مثال:
عمليةنتيجة
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitwise AND (&)

Bitwise AND تُرجع 1 فقط إذا كانت كلتا البتتين 1:

عدد عشريالثنائية
500000000000000000000000000000101
100000000000000000000000000000001
5 & ​​100000000000000000000000000000001 (1)

مثال

let x = 5 & 1;

JavaScript Bitwise OR (|)

طريقة Bitwise OR تُرجع 1 إذا كانت إحدى وحدات البت هي 1:

عدد عشريالثنائية
500000000000000000000000000000101
100000000000000000000000000000001
5 | 100000000000000000000000000000101 (5)

مثال

let x = 5 | 1;

JavaScript Bitwise XOR (^)

تقوم Bitwise XOR بإرجاع 1 إذا كانت البتات مختلفة:

عدد عشريالثنائية
500000000000000000000000000000101
100000000000000000000000000000001
5 ^ 100000000000000000000000000000100 (4)

مثال

let x = 5 ^ 1;

JavaScript Bitwise NOT (~)

عدد عشريالثنائية
500000000000000000000000000000101
~ 5111111111111111111111111111010 (-6)

مثال

let x = ~5;

جافا سكريبت (تعبئة صفرية) إزاحة لليسار باتجاه أحادي (<<)

هذا هو صفر ملء اليسار التحول. يتم دفع واحد أو أكثر من وحدات البت الصفرية من اليمين ، وتسقط وحدات البت الموجودة في أقصى اليسار:

عدد عشريالثنائية
500000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

مثال

let x = 5 << 1;

JavaScript (Sign Preserving) التحول إلى اليمين باتجاه Bitwise (>>)

هذه علامة تحافظ على التحول الصحيح. يتم دفع نسخ من أقصى اليسار للداخل من اليسار ، والبتات الموجودة في أقصى اليمين تسقط:

عدد عشريالثنائية
-5111111111111111111111111111011
-5 >> 1111111111111111111111111111101 (-3)

مثال

let x = -5 >> 1;

جافا سكريبت (تعبئة صفرية) التحول الأيمن (>>>)

هذا هو التحول الصحيح صفر ملء. يتم دفع واحد أو أكثر من وحدات البت الصفرية إلى الداخل من اليسار ، وتسقط وحدات البت الموجودة في أقصى اليمين:

عدد عشريالثنائية
500000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (2)

مثال

let x = 5 >>> 1;

الأعداد الثنائية

من السهل فهم الأرقام الثنائية مع مجموعة بت واحد فقط:

التمثيل الثنائيقيمة عشرية
000000000000000000000000000000011
000000000000000000000000000000102
000000000000000000000000000001004
000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

يكشف تعيين عدد قليل من البتات عن النمط الثنائي:

التمثيل الثنائيقيمة عشرية
000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (32 + 8 + 4 + 1)

يتم تخزين الأرقام الثنائية لجافا سكريبت في تنسيق مكمل اثنين.

هذا يعني أن الرقم السالب هو ليس على مستوى أحادي الرقم بالإضافة إلى 1:

التمثيل الثنائيقيمة عشرية
000000000000000000000000000001015
111111111111111111111111111011-5
000000000000000000000000000001106
111111111111111111111111111010-6
0000000000000000000000000010100040
11111111111111111111111111011000-40

تحويل عشري إلى ثنائي

مثال

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

تحويل ثنائي إلى عشري

مثال

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}