
No.6ベストアンサー
- 回答日時:
★負の表現について(8Bit)
・符号付きの char の場合
0x00…+0
0x01…+1
:
0x7E…+126
0x7F…+127
0x80…-128 ←最上位ビットがON(符号ビット)
0x81…-127
:
0xFE…-2
0xFF…-1
・符号なしの unsigned char の場合
0x00…0
0x01…1
:
0x7E…126
0x7F…127
0x80…128 ←最上位ビットがON(符号なしだから負にならない)
0x81…129
:
0xFF…255
・2の補数の 0xFF(11111111) を符号付きの8ビットと解釈する。
(1)11111111→00000000(ビット反転)
(2)00000000→00000001(+1加算)
(3)00000001→1なので-1と解釈
・2の補数の 0xFE(11111110) を符号付きの8ビットと解釈する。
(1)11111110→00000001(ビット反転)
(2)00000001→00000010(+1加算)
(3)00000010→2なので-2と解釈
・2の補数の 0xF5(11110101) を符号付きの8ビットと解釈する。
(1)11110101→00001010(ビット反転)
(2)00001010→00001011(+1加算)
(3)00001011→11なので-11と解釈
・2の補数の 0xCA(11001010) を符号付きの8ビットと解釈する。
(1)11001010→00110101(ビット反転)
(2)00110101→00110110(+1加算)
(3)00110110→54なので-54と解釈
とこんな感じで解釈します。
参考資料:
http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text …→『負数(2の補数表現)』
http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7% …→『符号付数値表現』
http://www.ffortune.net/comp/develop/data/kazu.htm→『数の表現』
参考資料を読んだ方が詳しいです。
読んでみましょう。
+127の次はー128になるんですね
ここを理解していなかったので混乱して頭の中がおめでたい事になっていました・・
解答付きの練習問題まで考えてくださってどうもありがとうございました
No.4
- 回答日時:
> でもなぜ
> 11111111がー1になるのがよく判りません
11111111
+ 1
─────────
100000000
ケタあふれした(8bitを超えた)最上位を取り除くと0になります。
1を加えて0になる数はー1です。
No.3
- 回答日時:
char型は少なくとも8ビット以上の精度を持つ整数型です。
処理系によっては、9ビットとか16ビットとか64ビットの場合もあります。符号付きか符号無しかも処理系定義です。ucharというのは言語規格には存在しないので、それを定義した人に聞いてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# Cの関数の引数のconst *charについて 5 2023/04/25 13:05
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
「#undef」と「#define」の使い...
-
Integer変数をカラにしたいので...
-
構造体のデータを丸ごとコピー...
-
C言語 構造体の中に共用体を定...
-
構造体の初期化方法について
-
整数から16進数への変換 現在c...
-
日付チェック関数について
-
構造体のポインタにNULLが入らない
-
typedefをプログラム中で解除す...
-
構造体のメモリの確保のされかた
-
VBAの変数のデータ型を変更する...
-
値が代入されてない時
-
変数の初期化について
-
ユーザー定義型変数の一括初期化
-
異なる構造体のデータのコピー
-
*s.pstrと*(s.pstr)は同じですか?
-
C++ 構造体の一括初期化 {0}
-
charとucharの違い
-
VBAで符号無し整数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
VBAのプログラムで、DIAG = 1# ...
-
「#undef」と「#define」の使い...
-
C++ 構造体の一括初期化 {0}
-
構造体のデータを丸ごとコピー...
-
long型のデータをバイト型の配...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
VBAの変数のデータ型を変更する...
-
VBAで符号無し整数
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
変数の初期化について
-
値が代入されてない時
-
charとucharの違い
-
構造体の初期化方法について
-
整数から16進数への変換 現在c...
-
命名規則 VB 構造体
-
日付チェック関数について
-
1バイトデータの読み出しについて
おすすめ情報