Cプログラムにおける16進数から8進数への変換プログラム
我们得到一个十六进制数字作为字符串;任务是将其转换为八进制。要将十六进制数转换为八进制数,我们必须 -
- 找到与十六进制数等效的二进制数。
- 将二进制数转换为八进制数。
什么是十六进制数
十六进制数是以16为基数的数字,数字从0到9,从10开始数字表示为A其中代表 10,B 代表 11,C 代表 12,D 代表 13,E 代表 14,F 代表 15。
要将十六进制数转换为二进制数,每个数字都会转换为 4 位的二进制数
什么是八进制
计算机中的八进制以8为基数表示,即0-7的八进制数由三个二进制数或三个二进制数字组成。
我们必须做什么
就像我们有一个十六进制数 1A6,所以它现在对于十六进制表示 1、10 和 6首先,我们必须找到十六进制数的二进制等价物,即,
因此,1A6 的二进制 = 0001 1010 0110
现在找到十六进制数的二进制后,下一个任务是找到八进制
在此之前,我们将二进制数分为三组。分组为 3 后,我们将得到 000 110 100 110
其八进制表示形式为 -
因此十六进制数 1A6 的八进制表示为 − 646
示例
Input: 1A6 Output: Octal Value = 646 Explanation: Input: 1AA Output: 652
我们将用来解决给定问题的方法 -
- 获取输入并将其存储为字符串。
- 转换十六进制数或表达式转换为二进制,按照以下方法 -
- 通过添加各自的二进制表示来检查所有 16 种十六进制情况。
- 返回结果。
- 按照以下步骤将二进制数转换为八进制数 -
- 通过比较二进制数与八进制数的所有可能情况,取 3 个位置.
- 设置八进制的值=(val * place)+八进制;
- 二进制数除以1000
- place *= 10 < /ul>
- 返回结果。
算法
Start Step 1-> In function long long int hexa_binary(char hex[]) Declare variables binary, place Declare and initialize i = 0, rem, val Initialize t n = strlen(hex) Initialize binary = 0ll and place = 0ll Loop For i = 0 and hex[i] != '\0' and i++ { binary = binary * place; switch (hex[i]) { case '0': binary += 0 case '1': binary += 1 case '2': binary += 10 case '3': binary += 11 case '4': binary += 100 case '5': binary += 101 case '6': binary += 110 case '7': binary += 111 case '8': binary += 1000 case '9': binary += 1001 case 'a': case 'A': binary += 1010 case 'b': case 'B': binary += 1011 case 'c': case 'C': binary += 1100 case 'd': case 'D': binary += 1101; break; case 'e': case 'E': binary += 1110; break; case 'f': case 'F': binary += 1111; break; default: printf("Invalid hexadecimal input."); } place = 10000; } return binary; } long long int binary_oct(long long binary) { long long int octal, place; int i = 0, rem, val; octal = 0ll; place = 0ll; place = 1; while (binary > 0) { rem = binary % 1000; switch (rem) { case 0: val = 0; break; case 1: val = 1; break; case 10: val = 2; break; case 11: val = 3; break; case 100: val = 4; break; case 101: val = 5; break; case 110: val = 6; break; case 111: val = 7; break; } octal = (val * place) + octal; binary /= 1000; place *= 10; } return octal; } long long int hexa_oct(char hex[]) { long long int octal, binary; // convert HexaDecimal to Binary binary = hexa_binary(hex); // convert Binary to Octal octal = binary_oct(binary); return octal; } int main() { char hex[20] = "1a99"; printf("Octal Value = %lld", hexa_oct(hex)); return 0; }
示例
#include <stdio.h> #include <string.h> #include <math.h> //To convert hex to binary first long long int hexa_binary(char hex[]) { long long int binary, place; int i = 0, rem, val; int n = strlen(hex); binary = 0ll; place = 0ll; for (i = 0; hex[i] != '\0'; i++) { binary = binary * place; switch (hex[i]) { case '0': binary += 0; break; case '1': binary += 1; break; case '2': binary += 10; break; case '3': binary += 11; break; case '4': binary += 100; break; case '5': binary += 101; break; case '6': binary += 110; break; case '7': binary += 111; break; case '8': binary += 1000; break; case '9': binary += 1001; break; case 'a': case 'A': binary += 1010; break; case 'b': case 'B': binary += 1011; break; case 'c': case 'C': binary += 1100; break; case 'd': case 'D': binary += 1101; break; case 'e': case 'E': binary += 1110; break; case 'f': case 'F': binary += 1111; break; default: printf("Invalid hexadecimal input."); } place = 10000; } return binary; } //To convert binary to octal long long int binary_oct(long long binary) { long long int octal, place; int i = 0, rem, val; octal = 0ll; place = 0ll; place = 1; // giving all binary numbers for octal conversion while (binary > 0) { rem = binary % 1000; switch (rem) { case 0: val = 0; break; case 1: val = 1; break; case 10: val = 2; break; case 11: val = 3; break; case 100: val = 4; break; case 101: val = 5; break; case 110: val = 6; break; case 111: val = 7; break; } octal = (val * place) + octal; binary /= 1000; place *= 10; } return octal; } // to convert the hexadecimal number to octal long long int hexa_oct(char hex[]) { long long int octal, binary; // convert HexaDecimal to Binary binary = hexa_binary(hex); // convert Binary to Octal octal = binary_oct(binary); return octal; } //main function int main() { char hex[20] = "5CD"; printf("Octal Value = %lld", hexa_oct(hex)); return 0; }
输出
Octal Value = 2715
以上がCプログラムにおける16進数から8進数への変換プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









以下に、ローマ数字を 10 進数に変換する C 言語アルゴリズムを示します。 アルゴリズム ステップ 1 - 開始 ステップ 2 - 実行時にローマ数字を読み取る ステップ 3 - 長さ: = strlen(roman) ステップ 4 - i=0 から長さ-1 の場合 ステップ4.1-switch(roman[i]) ステップ 4.1.1-case'm': &nbs

辞書編集的な文字列比較とは、文字列が辞書順に比較されることを意味します。たとえば、「apple」と「appeal」という 2 つの文字列がある場合、「app」の最初の 3 文字が同じであるため、最初の文字列が最後に来ます。次に、最初の文字列の文字は「l」で、2 番目の文字列の 4 番目の文字は「e」になります。 「e」は「l」より短いため、辞書順に並べ替えると最初に表示されます。文字列は配置される前に辞書順に比較されます。この記事では、C++ を使用して 2 つの文字列を辞書編集的に比較するためのさまざまな手法を見ていきます。 C++ 文字列での Compare() 関数の使用 C++string オブジェクトには Compare() があります。

リンク リストは動的なメモリ割り当てを使用します。つまり、リンク リストはそれに応じて拡大および縮小します。これらはノードのコレクションとして定義されます。ここで、ノードにはデータとリンクという 2 つの部分があります。データ、リンク、リンクリストの表現は以下のとおりです。 ・リンクリストの種類 リンクリストには以下の4種類があります。 ・シングルリンクリスト/シングルリンクリスト ダブル/ダブルリンクリスト 循環シングルリンクリスト 循環ダブルリンクリスト再帰的メソッドを使用してリンク リストの長さを確認します。ロジックは -intlength(node *temp){ if(temp==NULL) returnl; else{&n

名前変更機能は、ファイルまたはディレクトリを古い名前から新しい名前に変更します。この操作は移動操作と似ています。したがって、この名前変更機能を使用してファイルを移動することもできます。この関数は、stdio.h ライブラリ ヘッダー ファイルに存在します。 rename 関数の構文は次のとおりです: intrename(constchar*oldname,constchar*newname); rename() 関数は 2 つのパラメータを受け取ります。 1 つは古い名前、もう 1 つは新しい名前です。どちらのパラメータも、ファイルの古い名前と新しい名前を定義する定数文字へのポインタです。ファイルの名前が正常に変更された場合はゼロを返し、それ以外の場合はゼロ以外の整数を返します。名前変更操作中

双曲線関数は、円の代わりに双曲線を使用して定義され、通常の三角関数と同等です。ラジアン単位で指定された角度から双曲線正弦関数の比率パラメーターを返します。しかし、その逆、つまり別の言い方をすればいいのです。双曲線正弦から角度を計算したい場合は、双曲線逆正弦演算のような逆双曲線三角関数演算が必要です。このコースでは、C++ で双曲線逆サイン (asinh) 関数を使用し、ラジアン単位の双曲線サイン値を使用して角度を計算する方法を説明します。双曲線逆正弦演算は次の式に従います -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}ここで\:In\:is\:自然対数\:(log_e\:k)

マップは C++ の特別なタイプのコンテナで、各要素は 2 つの値、つまりキー値とマップ値のペアです。キー値は各項目のインデックス付けに使用され、マップされた値はキーに関連付けられた値です。マップされた値が一意であるかどうかに関係なく、キーは常に一意です。 C++ でマップ要素を出力するには、反復子を使用する必要があります。項目のセット内の要素は、反復子オブジェクトによって示されます。イテレータは主に配列や他のタイプのコンテナ (ベクトルなど) で使用され、特定の範囲内の特定の要素を識別するために使用できる特定の操作セットを備えています。イテレータをインクリメントまたはデクリメントして、範囲またはコンテナ内に存在するさまざまな要素を参照できます。イテレータは、範囲内の特定の要素のメモリ位置を指します。イテレータを使用して C++ でマップを出力する まず、定義方法を見てみましょう。

論理プログラミングの問題を解決する場合、文字列または文字の使用が非常に役立つ場合があります。文字列は文字の集合であり、ASCII 値の記号を保持するために使用される 1 バイトのデータ型です。記号には、英文字、数字、または特殊文字を使用できます。この記事では、C++ を使用して文字が英語文字かアルファベット文字かを確認する方法を学びます。 isalpha() 関数のチェック 数値が文字であるかどうかをチェックするには、ctype.h ヘッダー ファイルの isalpha() 関数を使用できます。これは文字を入力として受け取り、それがアルファベットの場合は true を返し、そうでない場合は false を返します。この関数の使用法を理解するために、次の C++ 実装を見てみましょう。 Example の中国語訳は次のとおりです。

現代科学は、複数の数の概念に大きく依存しています。この概念は、17 世紀初頭にジローラモ カルダーノによって初めて確立され、16 世紀に導入されました。複素数の公式は a+ib です。ここで、a は HTML コードを保持し、b は実数です。複素数には、実数部 <a> と虚数部 (<ib>) の 2 つの部分があると言われます。 i または iota の値は √-1 です。 C++ の複数形クラスは、複素数を表すために使用されるクラスです。 C++ の複合クラスは、いくつかの複素数演算を表現および制御できます。複数の数値を表現し、表示を制御する方法を見てみましょう。 imag() メンバー関数 上で述べたように、複素数は実数部と虚数部で構成されます。実数部を表示するには、real() を使用します。
