プログラミングやってるんだけど、シフト演算子で詰んだ・・・・

公開日: : 最終更新日:2015/11/17 プログラミング, 初心者 , , , ,

1: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:43:11.909 ID:g2Ldo3BI0.net
符号なし右シフト意味分からなすぎ
11011001を11101100にしたら数増えるんじゃないの

2: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:44:50.226 ID:+7vl19A30.net
雑魚かよ
一個へるじゃん

 

4: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:47:28.769 ID:TfDb1Rmwa.net
あと符号なし右シフトは最上位ビットは0になるぞ
最下位ビットを最上位にずらすんじゃねー

 

6: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:48:49.078 ID:g2Ldo3BI0.net
極端な話11011001を右に7ずらしたら11111111になって一番大きい数になるじゃん
なんで違うの

 

8: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:51:20.652 ID:g2Ldo3BI0.net
頼む助けて

 

10: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:53:07.471 ID:zzTBETNMM.net
何で1埋めるんだよ
新しいか

 

13: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:58:05.944 ID:g2Ldo3BI0.net
一番左端は符号だったのか!
じゃあ10000000を2ずらすと10100000ってことでおk?

 

16: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:59:32.821 ID:GOKQlTJ70.net
>>13
空いたところが全部最上位ビットで埋まるので11100000になる

 

18: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:01:56.084 ID:g2Ldo3BI0.net
>>16
これが分かんないんだよ
>>6みたいにならないの?
2で割るどころかでかくなってるだろ

 

19: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:03:31.980 ID:GOKQlTJ70.net
>>18
1つ右シフトすると、符号が同じで絶対値が半分になるようになってる

スポンサーリンク

14: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:58:50.162 ID:GOKQlTJ70.net
11011001を右に7つだったら00000001だろ>>1はアホか

 

15: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:59:04.659 ID:b8jW/NrU0.net
処理系によって違うとおも
1の補数とか2の補数とかあるし

 

21: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:05:23.992 ID:GOKQlTJ70.net

具体的には、

10000000b は -128
11100000b は -32

2つシフトしたから1/4になってる

 

44: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:51:06.061 ID:g2Ldo3BI0.net
調べて分かったこと
・左端が1なら負の数(符号ありの場合のみ)
・俺は↑を符号なしで考えていたから分からなかった
・負の数は0と1を反転して考える
・つまり>>21は10000000→01111111、11100000→00011111になる
でおk?
補数とかは調べてないから分からん

 

45: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:52:23.756 ID:b8jW/NrU0.net
>>44
それは1の補数表現だな

 

46: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:52:45.751 ID:XNqihR8r0.net
>>44
補数を調べなきゃ負の数を表現できないぞ

 

22: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:10:29.099 ID:g2Ldo3BI0.net
今更だけど分からないの符号なしじゃなくて有りだった

 

23: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:12:40.971 ID:b8jW/NrU0.net
そもそも負数表現がどんなものかしってるのか?

 

24: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:14:47.331 ID:g2Ldo3BI0.net
>>23
全くの素人だからなんも分からん
ググったけど00100000が32で11100000が-32っていうのが分からん
1多い方が数大きいんじゃないの

 

25: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:15:49.982 ID:V0d4oJTE0.net
>>24
解散

 

28: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:19:16.770 ID:GOKQlTJ70.net
ビット表現もわからん奴がビット演算子に手を出すな

 

30: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:21:54.435 ID:g2Ldo3BI0.net
シフト演算子とかそれ以前の問題だったのか
ビット表現ってやつ勉強してくるわ
アホに付き合ってくれてありがとう

 

32: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:28:14.040 ID:XNqihR8r0.net

符号ビットが先頭のビットとして1バイトの数字を考えると

10進数 2+1=3
2進数 0010 + 0011 = 1

10進数 -2+1
2進数 1010 – 1001 = 1

とすると正の数と負の数で処理方法が違ってしまう

 

33: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:30:22.772 ID:XNqihR8r0.net

あ、間違った

符号ビットが先頭のビットとして1バイトの数字を考えると

10進数 2+1=3
2進数 0010 + 0001 = 0011

10進数 -2+1
2進数 1010 – 0001 = 1001

とすると正の数と負の数で処理方法が違ってしまう

 

35: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:31:49.918 ID:GOKQlTJ70.net

>>33
10進数 -2+1
2進数 1010 + 0001 = 1011

じゃね?

 

37: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:34:10.142 ID:XNqihR8r0.net
>>35
この表現だと
2進数 1010 + 0001 = 1011
10進数 -2+1=-3
って解釈になるぞ

 

38: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:35:20.915 ID:GOKQlTJ70.net
>>37
だから、そうならないようにしなくちゃいけないって話じゃろ?

 

34: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:31:03.395 ID:XNqihR8r0.net

あ、少し違った

符号ビットが先頭のビットとして1バイトの数字を考えると

10進数 2+1=3
2進数 0010 + 0001 = 0011

10進数 -2+1=-1
2進数 1010 – 0001 = 1001

とすると正の数と負の数で処理方法が違ってしまう

 

36: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:32:48.873 ID:XNqihR8r0.net

あ、こっちのほうが分かりやすいだろうな
また訂正…

符号ビットが先頭のビットとして1バイトの数字を考えると

10進数 2+1=3
2進数 0010 + 0001 = 0011

10進数 2+(-1)=1
2進数 0010 + 1001 = 0001

とすると正の数と負の数で違う処理が必要になる

 

41: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:38:15.394 ID:GOKQlTJ70.net
2の補数が「暗黙のオーバーフロー/アンダーフロー」だって事さえ解れば理解は一瞬

 

42: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:39:44.224 ID:XNqihR8r0.net
>>41
それなら>>36を補数で表現するとどうなるか書いてご覧
お前は絶対間違える確信がある

 

47: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 13:54:07.832 ID:GOKQlTJ70.net
>>42
0010+1111=0001

 

48: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:01:41.199 ID:XNqihR8r0.net

>>47
正解だ

10進数 2+(-1)=1
2進数 0010 + 1111 = (1)0001 先頭ビットは桁あふれ

こうすれば加算と減算を同じように処理できる

 

51: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:09:11.190 ID:g2Ldo3BI0.net
0と1反転した後1足したのが2の補数で引き算を足し算として処理するためにある?
>>48は10進数-1を2進数1110で表した後1足して1111にしてるのか

 

60: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:21:15.654 ID:XNqihR8r0.net
>>51
の後半は2進数0001のビットを反転した1110に1を足すと1111になる
これが補数の表現形式

 

55: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:13:40.342 ID:XNqihR8r0.net

>>51
符号つき符号なしの両方があるだろ
符号なしなら先頭ビットも数字

符号なしと解釈すると

10進数 2+15=17
2進数 0010 + 1111 = (1)0001 先頭ビットは桁あふれ

負の数がある場合でも正の数の処理を変える必要がない

 

49: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:07:06.901 ID:l8H1P+Y+d.net
ええ…絶対間違える確信があるからの正解だて…
もっと他に何か言うことないんか…

 

50: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:08:22.385 ID:XNqihR8r0.net
>>49
こんな簡単なことに15分もかけてるからあちこち調べたんだろうな~
ご苦労さん

 

53: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:11:28.408 ID:l8H1P+Y+d.net
これ負の数は上方に無限に1が続いてるってこと知らないと理解しづらいよな
コンピューターじゃ有限で打ち切っちゃうけども

 

54: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:12:35.073 ID:6eRgbKGN0.net
面倒だと思うけど、一回一回10進数に直すといいよ
そのほうが理解しやすい

 

57: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:19:01.208 ID:XNqihR8r0.net

もうちょっと分かりやすい例だと

符号なし
10進数 2+10=12
2進数 0010 + 1010 = 1100

符号あり
10進数 2+(-6)=-4
2進数 0010 + 1010 = 1100

ってなる

 

58: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:19:09.726 ID:g2Ldo3BI0.net
符号付きと符号なしってどうやって見分けるの

 

61: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:21:44.439 ID:GOKQlTJ70.net
>>58
アセンブリレベルでは、どちらとして解釈したいか
高級言語レベルでは、unsigned 型かどうか
ビット表現としては何も変わらない

 

65: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:23:55.853 ID:g2Ldo3BI0.net
>>61
どっちでもそんなに変わらないってことか

 

66: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:25:36.119 ID:XNqihR8r0.net
>>65
どちらであるかをプロセッサは区別せずに処理できるような表現形式にしている
ということ

 

63: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:22:22.343 ID:Y1wQtEV70.net
お前シフト演算するの?
する時に覚えればいいよどうせ忘れるし

 

71: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:30:29.052 ID:g2Ldo3BI0.net
だいたい分かったと思うありがとうお前ら
とりあえずif文も満足に使えないから>>63の言う通りに基本を覚えるわ

 

64: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:22:56.772 ID:b8jW/NrU0.net
シフト演算の使い道がいまだにわからない

 

67: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:27:13.963 ID:rVjCy9y70.net
>>64
処理速度とメモリ使用量が問われないなら気にしなくてもいいよ 計算手法変えれば実現可能だし
逆に言うと計算手法を変えれば処理速度とメモリ使用量が激減できるっつーことでもあるんだけど

 

69: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:28:46.368 ID:b8jW/NrU0.net
>>67
そんなに処理速度ちがうんだ

 

68: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:28:32.412 ID:XNqihR8r0.net
今どきのコンパイラは勝手に最適化してくれるから
コーディングするときに意識する価値はないんだよな

 

70: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:29:35.023 ID:rVjCy9y70.net
よほど酷いコーディングしなければね
でもコンパイラの最適化の中身を調べるのかビット演算勉強するかならたぶん後者の方が楽だと思うwww

 

72: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:30:38.361 ID:XNqihR8r0.net
>>70
gcc -Oだけだぜ

 

73: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:33:26.409 ID:rVjCy9y70.net
>>72
ああいやなんつーのか、最適化手法そのもの的な
O3だと規約違反どうこうとかあるじゃん? あの辺詳しく追うと割とヘビーな気がしてる

 

74: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:44:28.045 ID:tVXvgidj0.net
C++身につけようと思って
http://www.amazon.co.jp/gp/product/4839926050/
これ買ったけど中古で3000円以上したしすっげー分厚いし
とちゅうで投げたらどうしようと思ってる
Cは一応大体わかってるつもり

 

75: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:48:41.900 ID:GOKQlTJ70.net

>>74
CとC++だと全く考え方が違うから、Cの知識で使えるのは制御構文とかプリプロセッサ命令くらいだけだと思うべし
本当はもうちょっと共通点あるけど、ないと思った方が楽

言語仕様を知りたいだけならこういうのもある
http://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml

 

76: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:52:39.326 ID:RzfcQBz+0.net

C++やる前に、オブジェクト指向とは何かを勉強すべき

じゃないと、簡単なことを難しくするだけの道具になる

 

77: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 14:53:55.580 ID:RzfcQBz+0.net
あと、あんまり古いC++の本は個人的には害悪だと思ってる
少なくともC++11以降の記述がないと、レガシーコードになる

 

78: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:00:21.610 ID:tVXvgidj0.net
ありがとう
オブジェクト指向は既に勉強したよ
俺が買った本は間違いだったのか…?

 

79: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:09:31.578 ID:tVXvgidj0.net
本はまだ届いてない
明日かあさってに届く予定
誰か持っている人いたら正直に感想ください
もう返品は出来ないけど

スポンサーリンク

80: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:10:48.429 ID:RzfcQBz+0.net

C++は面倒なルール多いから、OO言語未経験ならjavaとかC#のほうがいいよ
クラス図とかシーケンス図とかが書けるなら、C++でもいいかもね

いずれにせよ、Cとは互換性があるだけで別物

 

81: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:15:56.561 ID:tVXvgidj0.net
>>80
マジか…
C++のライブラリで使いたいのがあるのと
なんとなくプロのプログラマーはC++使える人多いイメージだったからやってみようと思ったんだが
もちろん難しいイメージはあった
ちなみにクラス図とシーケンス図の概念は知ってるけど書いたことはない…

 

83: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:33:37.646 ID:GOKQlTJ70.net

C++はOOP「も」できる言語だが、OOP「を」する言語じゃないってのに注意な
「C++はCをOOにしたもの」とかいう説明があったら、それは大抵の場合で嘘だ

ただし、それが嘘だと理解した上で、C++を低級Javaとして使う事はよく行なわれる話
決して「C++らしい」プログラミング技法ではないが、常人にC++を扱わせる上では仕方のない事だ

 

84: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 15:39:37.998 ID:RzfcQBz+0.net
C++らしさにこだわるかどうかだな
ぶっちゃけ、こだわる理由は今の時代そんなにないと思ってる

引用元:http://viper.2ch.sc/test/read.cgi/news4vip/1447558991/

関連記事

https---www.pakutaso.com-assets_c-2015-01-LISA78_MBAsawaru20141018102912500-thumb-1000xauto-5892

linuxインストールしたはいいがOS元に戻せなくなったったったwwwww

1: 以下、\(^o^)/でVIPがお送りします 2014/11/12(水) 18:04:20.7

記事を読む

wpid-tU1RYGX.png

【理系】エクセルで作ったRCハイパスフィルター回路のグラフからカットオフ電圧の数値を読み取る方法

1: 名無しさん@おーぷん 2015/06/23(火)01:01:49 ID:rtV 教えてくれ

記事を読む

https---www.pakutaso.com-assets_c-2014-10-AL206_kinshi220140810213504500-thumb-1000xauto-5422

面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?

1: ジャンピングエルボーアタック(埼玉県)@\(^o^)/ 2015/01/23(金) 19:

記事を読む

https---www.pakutaso.com-assets_c-2015-01-DI_IMG_5780500-thumb-1000xauto-5853

優しい○○系でC言語の勉強してるんだけど 全然優しくない件

1: 以下、\(^o^)/でVIPがお送りします 2015/05/09(土) 23:59:40.2

記事を読む

53874076d99cd0de764cadd23c5706e3_s

C言語の深淵を見たら勉強する気が失せた

1: 以下、\(^o^)/でVIPがお送りします 2015/05/31(日) 18:51:29.3

記事を読む

bsMJ_chisuima-jan15144715

プログラミング11日目だけどゲーム性を詰める事が急務だと気付いた

1: 以下、\(^o^)/でVIPがお送りします 2015/10/04(日) 12:04:45.7

記事を読む

002

今最も稼げるプログラミング言語がScalaに決定 次点でPythonやSwiftなど

1: 番組の途中ですがアフィサイトへの\(^o^)/です (ワッチョイ a976-++qg) 20

記事を読む

fig3

排便メソッドを実装した人間クラスから美少女クラスが作れないとかオブジェクト指向って使えねー

1: 番組の途中ですがアフィサイトへの\(^o^)/です (エーイモ SEbe-bGbo) 201

記事を読む

https---www.pakutaso.com-assets_c-2015-05-N866_sikamettura-thumb-1000xauto-14778

来年から情報系の専門行くからプログラミングの勉強をしておきたいんだが、初心者でもC言語覚えられるかな?

1: 以下、\(^o^)/でVIPがお送りします 2015/09/24(木) 10:43:41.7

記事を読む

3_1

プログラミングコンテストで優勝した中馬慎之祐(小6)が、アプリ甲子園でも優勝し二連覇達成

1: 番組の途中ですがアフィサイトへの\(^o^)/です (ワッチョイ 5474-TkMu) 20

記事を読む

Huawei-Mate-8-benchmark-post-launch_1
Androidのベンチマーク、10万点を突破 インフレが止まらない

1: 番組の途中ですがアフィサイトへの\(^o^)/です (ニククエ

hGJvbfh
せっかくの休みだ。原付で>>5に行く。

1: 名無しさん@おーぷん 2015/11/29(日)06:13:2

9xHNnte
XperiaZ5からdocomoのロゴだけ消せるシートが発売開始

1: 番組の途中ですがアフィサイトへの\(^o^)/です (アウアウ

bsLISA78_MBAsawaru20141018102912
子供にプログラミング教えることになりそうなんだが、どうやって教えたら良いんだ?

1: 以下、\(^o^)/でVIPがお送りします 2015/11/2

top
国内で最大容量の8THDDが2万円台に値下がり

1: 海江田三郎 ★ 2015/11/29(日) 14:43:35.

→もっと見る

PAGE TOP ↑