คำถามติดแท็ก binary-arithmetic


2
ฟังก์ชั่นที่กระจายอินพุต
ฉันต้องการทราบว่ามีฟังก์ชันจากหมายเลข n-bit ไปยังหมายเลข n-bit ที่มีคุณสมบัติดังต่อไปนี้หรือไม่:fff fffควรเป็น bijective ทั้งและน่าจะคำนวณได้อย่างรวดเร็วffff−1f−1f^{-1} fffควรคืนค่าตัวเลขที่ไม่มีความสัมพันธ์อย่างมีนัยสำคัญกับอินพุต เหตุผลคือ: ฉันต้องการเขียนโปรแกรมที่ทำงานกับข้อมูล ข้อมูลบางส่วนของข้อมูลจะถูกเก็บไว้ในแผนผังการค้นหาแบบไบนารี่โดยที่คีย์การค้นหาเป็นสัญลักษณ์ของตัวอักษร เมื่อเวลาผ่านไปฉันจะเพิ่มสัญลักษณ์เพิ่มเติมให้กับตัวอักษร สัญลักษณ์ใหม่จะได้รับหมายเลขฟรีต่อไป ดังนั้นต้นไม้จะมีอคติเล็ก ๆ น้อย ๆ กับคีย์ที่เล็กกว่าซึ่งทำให้เกิดการปรับสมดุลมากกว่าที่ฉันคิดว่าควรจะต้องการ ความคิดของฉันคือการฉีกตัวเลขสัญลักษณ์ที่มีเช่นที่พวกเขามีการแพร่กระจายอย่างกว้างขวางไปทั่วทั้งช่วงของ-1] เนื่องจากหมายเลขสัญลักษณ์มีความสำคัญเฉพาะในระหว่างอินพุตและเอาต์พุตที่เกิดขึ้นเพียงครั้งเดียวการใช้ฟังก์ชันดังกล่าวจึงไม่ควรแพงเกินไปfff[0,264−1][0,264−1][0,2^{64}-1] ฉันคิดเกี่ยวกับการวนซ้ำของตัวสร้างตัวเลขสุ่ม Xorshift หนึ่งครั้ง แต่ฉันไม่รู้วิธีการยกเลิกมันจริงๆแม้ว่ามันจะเป็นไปได้ในทางทฤษฎี ใครรู้ฟังก์ชั่นดังกล่าวหรือไม่? นี่เป็นความคิดที่ดีหรือไม่?

5
2 ** x เร็วกว่าในการคำนวณกว่า exp (x) หรือไม่
ยกโทษให้naïvetéที่จะชัดเจนในวิธีที่ฉันถามคำถามนี้รวมทั้งความจริงที่ว่าฉันถามมัน นักคณิตศาสตร์มักใช้เนื่องจากเป็นฐานที่ง่ายที่สุด / อร่อยที่สุดในทางทฤษฎี (เนื่องจากแคลคูลัส) แต่คอมพิวเตอร์ดูเหมือนว่าจะทำทุกอย่างเป็นเลขฐานสองดังนั้นคอมพิวเตอร์จะคำนวณได้เร็วกว่าหรือเปล่าexpexp\exp2**xMath::exp(x)

1
การคำนวณจำนวนบิตของพลังงานจำนวนเต็มขนาดใหญ่
ด้วยจำนวนเต็มสองจำนวนและnในการแทนฐานสองความซับซ้อนของการคำนวณขนาดบิตของx nคืออะไร?xxxnnnxnxnx^n วิธีหนึ่งในการทำเช่นนั้นคือการคำนวณโดยคำนวณการประมาณของlog 2 ( x )ด้วยความแม่นยำเพียงพอ ปรากฏว่าการคำนวณล็อก2 ( x )พร้อมkบิตของ precisions สามารถทำได้ในO ( M ( k ) บันทึกk )โดยที่M (1+⌊log2(xn)⌋=1+⌊nlog2(x)⌋1+⌊log2⁡(xn)⌋=1+⌊nlog2⁡(x)⌋1+\lfloor \log_2(x^n)\rfloor=1+\lfloor n\log_2(x)\rfloorlog2(x)log2⁡(x)\log_2(x)log2(x)log2⁡(x)\log_2(x)kkkO(M(k)logk)O(M(k)log⁡k)O(M(k)\log k)คือเวลาที่จำเป็นในการคำนวณผลิตภัณฑ์สองจำนวนเต็มของความยาวk นี่เป็นอัลกอริธึมของความซับซ้อน (ไม่ใช่แบบธรรมดา) โดยประมาณ O ( s log 2 s )ถ้า sถูกผูกไว้กับบิตของทั้ง xและ n (ถ้าฉันไม่มีข้อผิดพลาด)M(k)M(k)M(k)kkkO(slog2s)O(slog2⁡s)O(s\log^2 s)sssxxxnnn เราสามารถเอาชนะโดยที่sคือขนาดของxและn (ในกรณีที่มีขนาดใกล้เคียงกัน)? มีอัลกอริทึมง่าย ๆ ที่จะทำให้เกิดความซับซ้อนนี้หรือดีกว่าO(slog2(s))O(slog2⁡(s))O(s\log^2(s))sssxxxnnn หมายเหตุ: ฉันสนใจความซับซ้อนในแบบจำลองทางทฤษฎีเช่นเครื่องทัวริง

9
แสดงจำนวนจริงโดยไม่สูญเสียความแม่นยำ
จุดลอยตัวปัจจุบัน (ANSI C float, double) อนุญาตให้แสดงการประมาณจำนวนจริง มีวิธีใดที่จะแสดงจำนวนจริงโดยไม่มีข้อผิดพลาด ? นี่คือความคิดที่ฉันมีซึ่งเป็นอะไร แต่สมบูรณ์แบบ ตัวอย่างเช่น 1/3 คือ 0.33333333 ... (ฐาน 10) หรือ o.01010101 ... (ฐาน 2) แต่ยัง 0.1 (ฐาน 3) เป็นความคิดที่ดีที่จะใช้ "โครงสร้าง" นี้หรือไม่: base, mantissa, exponent ดังนั้น 1/3 อาจเท่ากับ 3 ^ -1 {[11] = base 3, [1.0] mantissa, [-1] exponent} ความคิดอื่น ๆ ?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.