web-dev-qa-db-ja.com

10進数で0x10とは何ですか?

私は次のコードを持っています:

_SN.get_Chars(5)
_

SNは文字列なので、5番目の文字が表示されます。 OK!

今、私は別のコードを持っていますが:SN.get_Chars(0x10)

0x10とは何ですか?数字ですか?もしそうなら、それは10進表記で何ですか?

10
Omar Abid

0xは、数値が 16進数 、つまり16を底とすることを意味します。

0x10は16です。

44
Michael

0xNNNN(必ずしも4桁である必要はありません)は、少なくともCでは16進数(ラテン語由来の言語では「hex」は6、「dec」は10であるため、16進数)を表します。ここで、Nは、0から9またはAからF(または10から15を表す小文字の同等物)のいずれかの数字であり、1が存在する場合があります。数字のそれらの数字の以上。それを表す他の方法はNNNNです16

1つの16進数が4ビット(2進数)を表すため、コンピューターの世界で非常に便利です。これは、それぞれが2つの可能な値を持つ4ビットで、合計2 x 2 x 2 x 2または16(24)値。言い換えると:

  _____________________________________bits____________________________________
 /                                                                             \
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| bF | bE | bD | bC | bB | bA | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 \_________________/ \_________________/ \_________________/ \_________________/ 
      Hex digit           Hex digit           Hex digit           Hex digit

基数Xの数値は、各位置がXの累乗の倍数を表す数値です。


私たち人間が慣れている基数10では、使用される数字は0から9で、数字は7304です。10 は:

  • (7 x 103)= 700010 ;プラス
  • (3 x 102)= 30010 ;プラス
  • (0 x 101)= 010 ;プラス
  • (4 x 10)= 410 ; 7304に等しい。

8進数で、数字は0から7です。番号7548 は:

  • (7 x 82)= 44810 ;プラス
  • (5 x 81)= 4010 ;プラス
  • (4 x 8)= 410 ; 492に等しい10

Cの8進数の前には文字0が付いているため、0123は123ではなく、(1 * 64)+(2 * 8)+ 3、つまり83になります。


2進数で、数字は0および1です。番号10112 は:

  • (1 x 23)= 810 ;プラス
  • (0 x 22)= 010 ;プラス
  • (1 x 21)= 210 ;プラス
  • (1 x 2)= 110 ; 11に等しい10

16進数で、数字は0から9およびAからF(「数字」10から15を表します) )。番号7F2416 は:

  • (7 x 163)= 2867210 ;プラス
  • (F x 162)= 384010 ;プラス
  • (2 x 161)= 3210 ;プラス
  • (4 x 16)= 410 ; 32548に等しい10

あなたの比較的単純な数0x10、これはCが10を表す方法です16、は単純です:

  • (1 x 161)= 1610 ;プラス
  • (0 x 16)= 010 ; 16に等しい10

余談ですが、さまざまな数の基数が多くのことに使用されています。

  • 基数10は、前述のように、手に10桁の数字がある私たち人間によって使用されます。
  • 基数2は、2つのバイナリ状態を電気回路で表すのが比較的簡単なため、コンピューターで使用されます。
  • 基数8は、UNIXファイルパーミッションでほぼ排他的に使用されるため、各8進数は3タプルのバイナリパーミッション(読み取り/書き込み/実行)を表します。また、Cベースの言語やUNIXユーティリティでも使用され、印刷可能な文字のみのデータストリームにバイナリ文字を挿入します。
  • 基数16は、4ビットを1桁で表すのに便利な方法です。特に、最近のほとんどのアーキテクチャでは、ワードサイズが4ビットの倍数であるためです。
  • base 64はメールのエンコードに使用されるため、バイナリファイルは印刷可能な文字のみを使用して送信できます。各桁は6つの2桁を表すため、3つの8ビット文字を4つの6ビット桁にパックできます(ファイルサイズは25%増加しますが、メールゲートウェイをそのまま通過することが保証されています)。
  • 半有用なスニペットとして、ベース60は非常に古い文明(バビロン、シュメール、メソポタミアなど)に由来し、分/時で60秒/分、円で360度、60分(アークの)程度など[コンピュータ業界とはあまり関係ありませんが、それでも興味深い]。
  • さらに役に立たないスニペットとして、 銀河ヒッチハイカーガイド の最終的な質問と回答は「6に9を掛けると何が得られるか」でした。と「42」。同じように、これは地球のコンピューターが故障しているためだと言いますが、他の人はそれを作成者が13本の指を持っている証拠と見なしています:-)
86
paxdiablo

'10'は、そのベースのベースを表していることに注意してください。

10は2(decimal) in base-2

10は3(decimal) in base-3

.。

10は基数10で10(10進数)です

.。

10は基数16(16進数)で16(10進数)です

.。

10はbase-1024で1024(10進数)です

...等々

3
jab

これは16進数で、10進数の16です。

3
sipwiz

単純なバージョンは0xで、16進数を示すプレフィックス ソース です。

したがって、計算している値は、プレフィックスafter、この場合は10です。

しかし、それは10番ではありません。最上位ビット1は16進値を示し、0は単位を示します。

だからあなたがする簡単な数学は

0x10

1 * 16 + 0 = 16

注-16進数は基数16であるため、16を使用します。

もう一つの例:

0xF7

15 * 16 + 7 = 247

16進テーブルを検索すると、値のリストを取得できます。たとえば、この チャート 通知Fは15に対応します。

2
mdo123