Apabila saya pergi ke Huawei untuk temu duga, saya tidak begitu bersedia untuk bertanya atau menyemak proses temu duga dengan jelas. yang sebenarnya agak tidak bersedia. Penulis ialah seorang jurutera Web Java yang mahir di bahagian hadapan, dan pengetahuan pengaturcaraan peringkat rendah asas telah lama tidak dikenali. Soalan ujian berasaskan komputer menemui soalan operasi bit ini Ia dikatakan sangat mudah dan prinsipnya sangat jelas kepada saya Namun, kerana saya tidak melakukan operasi bit selama bertahun-tahun, dan saya tidak pernah melakukan operasi bit Java. hasilnya sungguh memalukan...
Had masa ujian komputer adalah satu jam Bahasa boleh menjadi C atau bahasa skrip apa lagi penulis mengambil masa hampir tiga jam untuk menyelesaikan soalan dalam Java. Saya akan menggunakan JS apabila Saya kembali. Saya telah melaksanakan semula versi mudah dan menyiarkannya hari ini.
Soalannya ialah: masukkan secara kitaran setiap kumpulan dua nombor hex dan n (0<=n<31 Hex ialah nombor perenambelasan Apa yang perlu kita lakukan ialah menyongsangkan digit ke-n hex, dan kemudian Output the hasil yang sepadan dalam format perenambelasan.
Saya tidak akan menerangkan secara terperinci proses yang mengambil masa lebih daripada dua jam Berikut ialah pelaksanaan js, yang merupakan pengetahuan asas yang sangat mudah tentang operasi bit. Prinsipnya mudah, cuma alihkan 1 ke kiri dengan n bit, dan kemudian XOR dengan nombor asal:
function bitOper(hex, n){ var num = parseInt(hex); num ^= (1<<n); return num.toString(16); } console.log(bitOper(0x1234, 3)); //123c
Disebabkan oleh pengehadan 32-bit jenis integer js, kod contoh di atas hanya menyokong kes mudah n<31 (bit 31 ialah bit tanda).