開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、11.10(プログラミング実習)、実習11-6をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
実習11-6.
コード
sample.dart
import 'dart:html'; import 'package:fixnum/fixnum.dart' as fixnum; void main(){ Element pre = querySelector('#pre0'); InputElement input = querySelector('#t0'); RegExp pattern = new RegExp(r'^[-]?\d+$'); String result = window.navigator.userAgent + '\n'; result += '全てのビットを左端までシフト\n'; result += 'その他の数値\n'; [170, 0, 1, 2, 3, 4, 5, -1, -2].forEach((int n){ fixnum.Int32 a = new fixnum.Int32(n); result += '$a: ${allLeft(a)}\n'; }); result += '入力値\n'; pre.text = result; input.onKeyUp.listen((KeyboardEvent event){ String temp = ''; String v = input.value; if (!pattern.hasMatch(v)){ temp += '整数(32ビット符号付き、10進数)を入力して下さい。\n'; } else { fixnum.Int32 n = new fixnum.Int32(int.parse(v)); temp += '$n: ${allLeft(n)}'; } pre.text = '$result$temp'; }); } fixnum.Int32 allLeft(fixnum.Int32 n){ int bits = 0; fixnum.Int32 m = new fixnum.Int32(1); fixnum.Int32 l = new fixnum.Int32(1); while (m != (l << 31)){ if (n & m != 0){ bits += 1; } m <<= 1; } if (m & n != 0){ bits += 1; } if (bits == 0){ m = new fixnum.Int32(0); } bits -= 1; while (bits > 0){ m >>= 1; bits -= 1; } return m; }
0 コメント:
コメントを投稿