私がファーウェイに面接に行ったとき、十分な準備をしなかったので、面接プロセスを明確に質問したり確認したりしなかったため、合格するとすぐにコンピューターで質問をするように求められました。 、本当に少し準備不足でした。著者はフロントエンドが得意なJava Webエンジニアですが、基本的な低レベルのプログラミング知識は長らく馴染みがありませんでした。コンピューターベースのテスト問題では、ビット演算に関するこの問題が出題されました。それは非常に単純であるはずであり、原理は私にとって非常に明白です。しかし、私は長年ビット演算を行ったことがなく、一度もやったことがありません。 Java ビット操作、その結果は本当に恥ずべきものです...
コンピューターのテストの制限時間は 1 時間です。言語は C か Java を選択できますか? Java で質問を終えるのに 3 時間近くかかりました。恥ずかしいです。戻ってきたらJSの簡易バージョンを再実装して今日投稿しました。
問題は、2 つの数値 hex と n (0
2 時間以上かかったプロセスの詳細については説明しません。ここでは、js の実装について説明します。これは、ビット演算の非常に簡単な基礎知識です。原理は単純で、1 を n ビット左にシフトし、元の数値と XOR するだけです。
function bitOper(hex, n){ var num = parseInt(hex); num ^= (1<<n); return num.toString(16); } console.log(bitOper(0x1234, 3)); //123c
js 整数型の 32 ビット制限により、上記のコード例は、n