変数を一つだけ使って1~100まで足す

というのを見かけたのでintを16bitと8bitに区切って使って計算してみた。
using System;
public class Program
{
    public static void Main()
    {
        //0xFFFF00(5050) + 0xFF(100)
        int x = 100;
        for (; (x & 0xFF) > 0; x=  x & 0xFFFF00 | ((x & 0xFF) -1))
        {
            x = ((x >> 8) + (x & 0xFF)) << 8 | (x & 0xFF);
        }
        Console.WriteLine(x>>8);
    }
}
実行結果はこちら/ideone.com

コメント

このブログの人気の投稿

[Win]Xboxコントローラーのバッテリ残量確認と電源を切るツールXControllerTool

UWPアプリでSuicaの履歴を複数件読みだす方法