teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

補足説明

2019/10/25 09:30

投稿

qax
qax

スコア622

answer CHANGED
@@ -3,4 +3,25 @@
3
3
  ```python
4
4
  print(hex((0xff + 0xff) & 0xff))
5
5
  print(hex((0xffff + 0xffff) & 0xff))
6
- ```
6
+ ```
7
+
8
+ 追記
9
+
10
+ 0xff + 0xff の結果は 0x1fe ですね。
11
+ これを2進数に変換すると、
12
+
13
+ 0001 1111 1110
14
+
15
+ になると思います。
16
+ これに対して0xff(2進数で 0000 1111 1111) の論理積(すなわちbitごとのand)をとると、
17
+
18
+ 0001 1111 1110
19
+ 0000 1111 1111
20
+ ーーーーーーーー
21
+ 0000 1111 1110
22
+
23
+ となります。
24
+ したがって、計算結果と0xffの論理積をとることは、2進数の下8桁(16進数の下2桁)を残すことに等しいのです。
25
+
26
+ ですから、例えば、16進数の下1桁を残したい場合は0xfとの論理積をとればよいですし、
27
+ 下3桁を残したい場合は、0xfffとの論理積をとればよいのです。

1

微修正

2019/10/25 09:29

投稿

qax
qax

スコア622

answer CHANGED
@@ -1,4 +1,4 @@
1
- 演算結果と0xffの論理をとります。
1
+ 演算結果と0xffの論理をとります。
2
2
 
3
3
  ```python
4
4
  print(hex((0xff + 0xff) & 0xff))