วันหยุดปีใหม่กำลังจะมาเร็ว ๆ นี้และในที่สุดฉันก็มีเวลาว่าง ฉันเยี่ยมชมบทความทางเทคนิคต่าง ๆ ทุกวันและนี่อยู่ในสถานะที่ดี
ฉันอ่านบทความเกี่ยวกับ JS ในตอนบ่ายและมีย่อหน้าเช่นนี้ที่ดึงดูดความสนใจของฉัน
การคัดลอกรหัสมีดังนี้:
(การทำงาน () {
ชื่อ var = [];
ฟังก์ชันส่งคืน (ชื่อ) {
addName (ชื่อ);
-
ฟังก์ชั่น addName (ชื่อ) {
if (! ~ names.indexof (ชื่อ)) // ถ้ามีอยู่อย่าเพิ่ม
Names.push (ชื่อ);
console.log (ชื่อ); // ["linkfly"]
-
} ()) ('linkfly');
ผู้ให้บริการ "! ~" ในถ้า (! ~ names.indexof (ชื่อ)) หมายถึง? ถ้าคุณไม่เข้าใจให้เริ่มต้นด้วย ~ ก่อน
การทดสอบสามารถแสดงให้เห็นว่าค่าผลลัพธ์มีกฎนี้ - (x+1)
หลังจากค้นหาบทความบางบทความจะสูญเสียประโยคเพียงหนึ่งประโยคเท่านั้น: หมุนกลับด้วยบิตไบนารี
จากความหมายตามตัวอักษรที่นี่เราใช้การเป็นตัวแทนไบนารีแปดหลัก: 3 = 00000011 จากนั้น ~ 3 = 11111100 สูตรข้างต้นนั้นผิด
คำอธิบายข้างต้นยังคงเป็นนามธรรมและไม่เฉพาะเจาะจง ในความเป็นจริงสิ่งนี้เกี่ยวข้องกับความรู้เกี่ยวกับรหัสต้นฉบับรหัสย้อนกลับและรหัสเสริม
รหัสต้นฉบับ
บิตสูงสุดของการแสดงรหัสดั้งเดิมคือบิตสัญญาณซึ่งเป็น 0 เพื่อระบุจำนวนบวกและ 1 เพื่อระบุจำนวนลบ บิตที่เหลือแสดงค่าสัมบูรณ์ของจำนวน
รหัสผกผัน
สำหรับหมายเลขที่ลงนามรหัสผกผันของจำนวนบวกจะเหมือนกับรหัสต้นฉบับ รหัสผกผันของจำนวนลบคือบิตผกผันของบิตยกเว้นบิตเครื่องหมาย รหัสผกผันมักใช้เป็นรูปแบบกลางในกระบวนการค้นหารหัสส่วนประกอบ
ส่วนประกอบ
ส่วนประกอบของจำนวนบวกนั้นเหมือนกับรหัสต้นฉบับและรหัสผกผัน ส่วนประกอบของจำนวนลบคือการกลับรหัสต้นฉบับยกเว้นบิตเครื่องหมายและเพิ่ม 1 ในบิตสุดท้ายนั่นคือเพิ่ม 1 ลงในส่วนประกอบของจำนวน ตัวเลขในคอมพิวเตอร์มักจะแสดงในรูปแบบส่วนประกอบ ในรหัสส่วนประกอบ (-128) d ใช้แทน (-0) d หมายเหตุ: (-128) D ไม่มีรหัสต้นฉบับที่สอดคล้องกันและรหัสผกผัน (-128) d = (1,000,000) b
ค้นหาการดำเนินการเสริม
การดำเนินการเสริมไม่ได้พิจารณาบิตป้าย แต่กลับบิตต้นฉบับของรหัสต้นฉบับและเพิ่ม 1 ถึงบิตสุดท้าย ส่วนประกอบของตัวเลขคือส่วนประกอบของจำนวนตรงข้าม
นำตัวอย่างบทความของผู้เขียนและเข้าใจ
~ หมายถึงการผกผัน bitwise ถ้าเป็น 00111 มันจะกลายเป็น 11000 (การผกผัน bitwise)
การเป็นตัวแทนไบนารีของ 57 คือ (1 ไบต์): 00111001
ไบนารีหลังการผกผัน bitwise (~ 57): 11000110 นี่แสดงเป็นทศนิยม: -70
นี่คือจำนวนลบหมายเลขที่ลงนาม ตัวเลขติดลบควรแสดงในคอมพิวเตอร์โดยใช้รหัสส่วนประกอบของพวกเขา: ส่วนประกอบ = บิตสัญลักษณ์จะกลับด้านแล้วเพิ่ม 1
ดังนั้นหลังจากบิตสัญญาณ -70 (11000110) กลับด้านหลัง bitwise มันคือ (10111001) จากนั้นเพิ่ม 1 มันคือ (10111010)
เปลี่ยนเป็นระบบทศนิยม: -58
ดังนั้น ~ 57 = -58
ณ จุดนี้ในที่สุดฉันก็คิดออก แม้ว่าสูตรสรุปสามารถวาดผลลัพธ์ได้อย่างรวดเร็ว แต่ก็ไม่สามารถอธิบายได้ว่าทำไม ในฐานะช่างเทคนิคเราชอบที่จะศึกษาและลึกลงไปในรายละเอียด
ให้เวลา:
รากฐานเป็นรากฐานที่สำคัญของทุกระดับบน หากคุณอุทิศตัวเองเพื่อฝึกลัทธิเต๋าถนนก็ยาว
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าทุกคนจะได้รับบางสิ่งบางอย่าง