問題タブ [unsigned-integer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 32 ビットの符号なし整数 (ビッグ エンディアン) を long に変換して戻す
32 ビットの符号なし整数 (ビッグ エンディアン順) を含む byte[4] があり、それを long に変換する必要があります (int は符号なし数値を保持できないため)。
また、その逆 (つまり、32 ビットの符号なし整数を含む long から byte[4] へ) を行うにはどうすればよいですか?
c++ - 符号付きおよび符号なしの 32 ビット整数変数に 2^31 を割り当てた後の奇妙な結果
質問のタイトルが示すように、2^31 を符号付きおよび符号なしの 32 ビット整数変数に割り当てると、予期しない結果が生じます。
C++
これは、何が起こっているかを確認するために作成した短いプログラム ( ) です。
出力は次のとおりです。
次に、別の関数を追加p()
しました。
コンパイルして実行すると、これが私をさらに混乱させます:
左シフト カウントが大きすぎるとコンパイラが文句を言うのはなぜですか? sizeof(unsigned long long
) は 8 を返すので、そのデータ型の最大値は 2^63-1 ではないでしょうか?
おそらく n*2 と n<<1 が常に同じように動作するとは限らないことに気がついたので、これを試しました。
これにより、出力として2 ^ 63の正しい値が得られます9223372036854775808
(Pythonを使用して確認しました)。しかし、左のたわごとをすることの何が問題なのですか?
n による左算術シフトは、2 nを乗算することと同じです (値がオーバーフローしない場合)。
-- ウィキペディア
値はオーバーフローしていません。値が 2^63 (すべてのビットが設定されている) であるため、マイナス記号のみが表示されます。
左シフトで何が起こっているのかまだわかりません。誰か説明してもらえますか?
PS: このプログラムは、Linux Mint を実行している 32 ビット システムで実行されました (それが役立つ場合)。
c++ - size_t が署名されていないのはなぜですか?
Bjarne Stroustrup は The C++ Programming Language に次のように書いています。
符号なし整数型は、ストレージをビット配列として扱う用途に最適です。int の代わりに unsigned を使用して、正の整数を表すビットをもう 1 つ取得することは、ほとんど良い考えではありません。符号なしの変数を宣言することによって一部の値が正であることを保証しようとする試みは、通常、暗黙の変換規則によって無効になります。
size_tは、「正の整数を表すためにもう 1 ビット取得するため」に符号なしのようです。これは間違い (またはトレードオフ) でしたか? もしそうなら、自分のコードでの使用を最小限に抑える必要がありますか?
Scott Meyers による別の関連記事はこちらです。要約すると、彼は、値が常に正であるかどうかに関係なく、インターフェイスで unsigned を使用しないことを推奨しています。つまり、負の値が意味をなさない場合でも、必ずしも unsigned を使用する必要はありません。
ios - スキャンしたバーコード値をint値にデコードします
バーコードをスキャンして、Equal = 2の場合は値を取得し、 ==で表示する必要があります。また、 Equal = 3の場合は、 =で表示する必要があり、値が4の場合は無効です。
ただし、スキャンされたバーコードは整数値です。それを使用してデコードすると、それ以降のNSASCII
値までしか表示されず、127
無効な結果が表示されます。例:バーコード値=9699
結果値=のjem
場合、追加された結果値= jem=
actualstring value = %å
ascvalueidのみが表示されます37
これが私のコードです:
c - C - unsigned int から unsigned char 配列への変換
unsigned int 数値 (2 バイト) があり、それを unsigned char 型に変換したいと考えています。私の検索から、ほとんどの人が次のことを推奨していることがわかります。
正しいアプローチですか?unsigned char は 1 バイトであり、2 バイトのデータから 1 バイトにキャストしたためです。
データの損失を防ぐために、unsigned char[] の配列を作成し、個々のバイトを配列に保存したいと考えています。私は次のことで立ち往生しています:
また、unsigned char[2] を unsigned int に戻すにはどうすればよいでしょうか。
どうもありがとう。
c++ - c++ APIを使用してcv :: Matの要素(x、y)にアクセスする
私はこの議論に関する多くの投稿を知っており、それらの多くを読みましたが、まだ混乱しています. 問題は型です (ああ、いまいましい、これは c です。データ型を処理する必要があります! ;-))。
私は新しい超クールなテンプレート化された C++ API 関数を使用していますat
:
OK、ここに 1 チャンネルのフロートがあります。問題ありません。出力はクリアです。
フィルターを作成するだけです:
ここでは、alles klar、出力はまさに私が望むものです:
今、特定のポイント(マウスクリック?何でも)が範囲内にあるかどうかを確認したいと思います。
最初のコンピューター サイエンスのクラスで、achar
は an と同じサイズであることを覚えていますunsigned int
(私のマスク タイプは 0 == でCV_8U
あるため)。したがって、char を使用します。しかし、cout
それを char で取得して、役に立たない非 ascii シンボルを見せてくださいint
。
ここに出力:
どうした?大混乱。なぜ-1?? または、再び、なぜ 256?? 何が起こった?
printing - MIPSで符号なし整数を10進数で印刷するにはどうすればよいですか?
たとえば、この数値A0090000(16)をMIPSの符号なし10進数で出力したいとします。したがって、印刷結果は2684944384(10)になります。しかし、符号付き数値を印刷するためのアセンブリコードしか知らないため、行き詰まりました。
コードは次のようになります。
したがって、そのコードに「5」の代わりにA0090000(16)値を入力すると、マイナス10進数値(MSBが1であるため)が出力されます。これは-1610022912(10)ですが、結果は2684944383(10)になります。 )、これは符号なしの数値として読み取られます。
どうやってやるの?
c - ゼロへの最速の方法
unsigned int をゼロにする最速の方法は何ですか?
現在、値を 0 に設定しているだけですが、変数をゼロにするためのトリックがあるかどうかわかりません。現在のプロジェクトに数クロック サイクル戻る必要があります。私は標準の 8051 プロセッサを使用しており、2 つの異なる変数があり、それが役立つ場合はゼロにする必要があります。
powershell - 符号なし32ビット整数を宣言するには?
PowerShell で 32 ビット符号なし整数を宣言する方法はありますか?
符号なし ( で始まる0xf
)を追加しようとし0xff000000 + 0xAA
ていますが、負の数であることが判明しました0xff0000AA
。
c - enum 定義を unsigned int にキャストする
この SO 投稿によると:
C の列挙型のサイズは?
列挙型にはsigned int
type があります。
signed int
列挙型定義を からに変換したいと思いunsigned int
ます。
たとえば、私のプラットフォームでは、anunsigned int
は 32 ビット幅です。列挙型を作成したい:
私のコンパイラは、上記の定義が範囲外であると不平を言っています(これは a の場合ですsigned int
)。
unsigned int
enum
値 を宣言するにはどうすればよいですか?
編集1:
- 64 ビットに拡張しないことをお勧めします (コードが組み込みシステムに存在するため)。
- スキルの制限により、このプロジェクトでは C++ は使用できません。:-(
編集2:
- コンパイラは、ARM7 用の IAR Embedded Workbench です。