---
# System prepended metadata

title: Chapter2-1　「２進数の計算と数値表現」
tags: [基本情報技術]

---

# Chapter2-1　「２進数の計算と数値表現」
## 4/2(金) 
###### tags:`基本情報技術`




さつき：

- 2進数の足し算と引き算
    * コンピュータには引き算の概念がない
    * 引き算ダメなら足し算で→引き算を知らなくても、「負の数」を表現できれば！
- 負の数の表現方法（やり方はさまざま）
    *  「先頭の1ビット」は符号にするね
    *  補数。
        *  123 3桁の最大値999　999-123=876　876が補数。
        *  「いくつ足せば、次の桁に繰り上がる」というのが補数。 
        *  
*  過去問
    *  問2のレベル。。
        *  2の補数とは、負の数の表現方法の１つ
        *  2進数の各ビットを反転させて、1加算したものです。
        *  正負が逆の数値になります。
        *  10進数の3を4ビットの2進数で表現すると、0011
        *  各ビット反転...裏返す感じ？？
        *  これに1加算すれば、1101これが-3。不思議な世界だ。
    *  問3なんだろう。
        *  最下位2ビット→なんでもいいから例を考える
        *  3ビットの2進数を想定→111,110,101,100,011,010,001,000
        *  


にわ：
- 読み込み
    * コンピュータは足し算しかわからないので、負の数を定義する必要がある
    * 定義方法は色々あるけど、一番単純なのは先頭の１ビットを符号とすること
       * これでできない部分を補う「補数」という考え方がある -> 次の桁に繰り上がるための数。
       * ２進数だと、「2の補数」で次の桁に繰り上がるから、コンピュータはこれを負の数を表すのに使う。
       * 「2の補数」は各ビットを反転させて、最後のビットに+1したもの。(ex:1011 -> 0101)
       * 
- 過去問
    * 問2むずすぎる
        * 考え方：とりあえず桁数の少ない4ビットと置いて、全部２進数で書いてみれば解ける感じ？
        * 「1111」の2の補数は「0001」->これを10進数に直すと1になる->「1111」の反転?が「1」なので、「1111」は-1、ということみたい。
    * 問3 ガチで意味わからんです
        * 「補数」の概念を理解する必要がありそう->[補数表現とは？１の補数と２の補数の違いと計算方法まとめ](https://proengineer.internous.co.jp/content/columnfeature/6254)
        > 補数を使うことによってもたらされる最も大きなメリットは、「マイナス記号を使わずに負の数を表現することができる」
        * x - y を求めたい場合：xに「yの補数」を足しちゃって、その時繰り上がった最上位の桁を取り除くと答えになる。
            * ex: 1234 - 1111 の場合、 1234 + 8889 = 10123 -> 最上位の「1」を取り除くと、元の答えとなる「123」が導き出せる。 

ちさと：
- コンピュータに引き算させるときは、足し算を使う
- 負の数の表し方
    * 先頭の１ビットが０→正の数
    * 先頭の１ビットが１→負の数
- 補数
    * 補う数
    * 「123」 999(3桁の最大値) - 123 = 876(いくつ足せば123になるか)　これを９の補数という
    * 　　　　1000(次の桁に繰り上がる数) - 123 = 877(いくつ足せば123になるか)　これを10の補数という
- 過去問
    * (そもそも2進数の計算がわかっていない。。チャプター１やろう) 
    * 
