0x表記を使用した数値はどういう意味ですか?


107

何をしない0x数の接頭辞の意味は?

const int shared_segment_size = 0x6400;

これはCプログラムからのものです。それが何をx意味するのか、特に手紙の意味を思い出せません。


2
「16進表記」を検索
asawyer

2
@asawyerありがとう。「0x」を16進数として選択する前は、どこから検索すればよいかわかりませんでした。
Terry Li

3
検索する0x prefix C++ことで、今ここにあなたを連れてきます:)
Carl Smith

回答:


111

で始まるリテラル0xは16進整数です。(ベース16)

番号0x640025600です。

6 * 16^3 + 4 * 16^2 = 25600

文字を含む例(16進表記でも使用され、A = 10、B = 11 ... F = 15)

番号0x6BF027632です。

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632

2
私は何を不思議に思っていました、負の数は16進数でどのように示されるべきですか?-0xffまたは0x-ffのように?最初だと思いますが、わかりません。
Luc

7
@Luc最初のものは正しいです。より頻繁に私はちょうど0xffffffffなどを見ますが。(0xffffffff = -12の補数を仮定する32ビットintの場合)
Mysticial 2013

@Luc負の数は、2の補数を使用して2進数で表されます。'- '記号を必要としない賢い方法です。つまり、基本的にはバイナリから16進数、負または正への変換です。
Shuvo Sarker

@ShuvoSarker追加ありがとうございます!これは単なるメモリ表現ですが、0〜999の数値のセットがあり、1000〜1999が負の数値を表すことに同意した場合と同様です。私の質問は人間が読める表記についてでしたが、コンピューターがそれが他の誰かを助けるかもしれない方法を知っているので、感謝します:)
Luc

16

CおよびC構文に基づく言語では、接頭辞0xは16進数(基数16)を意味します。

したがって、0x400 = 4×(16 2)+ 0×(16 1)+ 0×(16 0)= 4×((2 42)= 2 2 ×2 8 = 2 10 = 1024、または1つのバイナリK 。

したがって、0x6400 = 0x4000 + 0x2400 = 0x19×0x400 = 25K


10

16進数です。

0x6400は4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600に変換されます


8

で始まる数値0xは16進数(基数16)です。0x6400を表し25600ます。

変換する、

  • 最後の桁を掛けます1
  • 下2桁に16を加える(16 ^ 1)
  • 下3桁に256を加える(16 ^ 2)
  • 下4桁に4096を加算(16 ^ 3)
  • ...等々

係数1、16、256などは、16の累乗です。

0x6400 = (0*1) + (0*16^1) + (4*16^2) + (6*16^3) = 25600 

または

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 

7

シンプル

これは、数値が他の基数ではなく16進数であることを示す接頭辞です。Cプログラミング言語はこれを使用してコンパイラーに指示します。

例:

0x6400変換6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.コンパイラは読み取ると0x6400、それは数が0xの用語の助けを借りて進数で理解しています。通常、私たちは、(6400)16 or (6400)8または任意のベースで理解できます。

何らかの形で助けを願っています。

良い一日、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.