No.2ベストアンサー
- 回答日時:
byte,short変数共にsigned valueとして処理されます。
byte bh=0x02; byte bl=(byte)0xa1; short sx; short sy;
byte bhh,bhl; int ix;
sx = (short)(bh<<8 | bl); ==>
sx = (short) (0x00000200 | 0xffffffa1)
= 0xffa1;
sx = (short)(bh<<8 | 0xff & bl); ==>
sx = (short)(0x00000200 | 0x000000a1)
= 0x02a1;
以上のようになります。
javaには unsigned type dataはありませんので途中計算は特に指定がない場合、sign extended 32bit data等として処理されます。
byte==>short==>intのタイプ変換はコンパイラで自動的に行われるので上記のように明示指定なしでOKです。
(途中の演算は自動的に32bit あるいは 64bitで行われます)
代入時の型変換も shortValue() 指定でなく (short)と指定することでOKです。
その方が見やすいし、無駄な命令は生成されません。
(多分コンパイラでshortValue() function callは無しに最適化されているとは思いますが)
また次の様な演算も参照してください。
ix = bhh<<24 | (0xff & bhl)<<16 | (0xff & bh)<<8 | (0xff & bl);
ix = (sx<<16) +(sy & 0xffff);
演算子の実行優先順位、暗黙のビット、符号拡張等に注意してコーディングして下さい。
優先順位が解りずらい場合は括弧(...)で括ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) エクセルの関数に関しての質問です。 5 2022/10/07 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
実行シェルからCOBOLへパラメー...
-
DOSバッチで変数の値を変数名に...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
ResultSetの内部構造(Java)
-
wsprintf関数の使い方について
-
Stringクラスの変数の格納アド...
-
【JavaScript】指定箇所に文字...
-
hiddenの値を消したくない!
-
【Excel VBA】繰り返し処理がで...
-
Javascriptでマシン固有の情報...
-
VB6で固定長の文字列の長さを変...
-
matchesを否定文として使う方法...
-
excel vba 時間計算と条件分岐...
-
結合した文字列をファイル名に...
-
指定した日付が何日前なのかを...
-
char型での演算子
-
getParameterの値変更
-
C言語の変数(LSB)の合わせ込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
javaのCSVデータ読込についてです
-
wsprintf関数の使い方について
-
BCD形式で時刻を!
-
結合した文字列をファイル名に...
-
Evaluate()に文字列の形式の数...
-
C言語の変数(LSB)の合わせ込...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
VB6,論理演算子Orの使い方がわ...
-
DateTimePickerに値を入れたい...
-
char型での演算子
-
String str = "a\\\\b\\\\c";
-
Javaの問題なのですが、「3文字...
-
8桁整数を限りなく短い文字列に...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
excel vba 時間計算と条件分岐...
おすすめ情報