開発環境
- 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 コメント:
コメントを投稿