<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: integer code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 01:50:41 GMT</pubDate>
    <description>DZone Snippets: integer code</description>
    <item>
      <title>Simple integer expression interpreter</title>
      <link>http://snippets.dzone.com/posts/show/4481</link>
      <description>This is a simple integer expression interpreter.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;#include &lt;string&gt;&lt;br /&gt;#include &lt;map&gt;&lt;br /&gt;#include &lt;cctype&gt;&lt;br /&gt;&lt;br /&gt;char look;&lt;br /&gt;std::map&lt;std::string, int&gt; table;&lt;br /&gt;&lt;br /&gt;void getChar() {&lt;br /&gt;    look = std::cin.get();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void error(const std::string &amp;s) {&lt;br /&gt;    std::cout &lt;&lt; std::endl;&lt;br /&gt;    std::cout &lt;&lt; "Error: " &lt;&lt; s &lt;&lt; "." &lt;&lt; std::endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void abort(const std::string &amp;s) {&lt;br /&gt;    error(s);&lt;br /&gt;    exit(1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void expected(const std::string &amp;s) {&lt;br /&gt;    abort(s + " Expected");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isAlpha(char c) {&lt;br /&gt;    return isalpha(c);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isDigit(char c) {&lt;br /&gt;    return isdigit(c);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isAlNum(char c) {&lt;br /&gt;    return isalnum(c);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isAddop(char c) {&lt;br /&gt;    return ((c == '+') || (c == '-'));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isMulop(char c) {&lt;br /&gt;    return (('*' == c) || ('/' == c));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool isWhite(char c) {&lt;br /&gt;    return ((' ' == c) || ('\t' == c));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void skipWhite() {&lt;br /&gt;    while (isWhite(look))&lt;br /&gt;        getChar();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void match(char x) {&lt;br /&gt;    if (look != x)&lt;br /&gt;        expected(std::string("\"") + x + "\"");&lt;br /&gt;    else {&lt;br /&gt;        getChar();&lt;br /&gt;        skipWhite();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void emit(const std::string &amp;s) {&lt;br /&gt;    std::cout &lt;&lt; "\t"  &lt;&lt; s;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void emitLn(const std::string &amp;s) {&lt;br /&gt;    emit(s);&lt;br /&gt;    std::cout &lt;&lt; std::endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void newLine() {&lt;br /&gt;    if (look == '\n')&lt;br /&gt;        getChar();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;std::string getName() {&lt;br /&gt;    if (!isAlpha(look))&lt;br /&gt;        expected("Name");&lt;br /&gt;&lt;br /&gt;    std::string name;&lt;br /&gt;    while (isAlNum(look)) {&lt;br /&gt;        name += look;&lt;br /&gt;        getChar();&lt;br /&gt;    }&lt;br /&gt;    skipWhite();&lt;br /&gt;&lt;br /&gt;    return name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int getNum() {&lt;br /&gt;    int value(0);&lt;br /&gt;&lt;br /&gt;    if (!isDigit(look))&lt;br /&gt;        expected("Integer");&lt;br /&gt;&lt;br /&gt;    while (isDigit(look)) {&lt;br /&gt;        value = value * 10 + look - '0';&lt;br /&gt;        getChar();&lt;br /&gt;    }&lt;br /&gt;    skipWhite();&lt;br /&gt;&lt;br /&gt;    return value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int expression();&lt;br /&gt;&lt;br /&gt;int factor() {&lt;br /&gt;    int ret;&lt;br /&gt;&lt;br /&gt;    if (look == '(') {&lt;br /&gt;        match('(');&lt;br /&gt;        ret = expression();&lt;br /&gt;        match(')');&lt;br /&gt;    } else if (isAlpha(look)) {&lt;br /&gt;        std::string name = getName();&lt;br /&gt;        if (table.count(name) == 0)&lt;br /&gt;            table.insert(std::pair&lt;std::string, int&gt;(name, 0));&lt;br /&gt;        ret = table[name];&lt;br /&gt;    } else&lt;br /&gt;        ret = getNum();&lt;br /&gt;&lt;br /&gt;    return ret;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int term() {&lt;br /&gt;    int value = factor();&lt;br /&gt;&lt;br /&gt;    while (isMulop(look)) {&lt;br /&gt;        if (look == '*') {&lt;br /&gt;            match('*');&lt;br /&gt;            value *= factor();&lt;br /&gt;        } else if (look == '/') {&lt;br /&gt;            match('/');&lt;br /&gt;            value /= factor();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int expression() {&lt;br /&gt;    int value(0);&lt;br /&gt;&lt;br /&gt;    if (!isAddop(look))&lt;br /&gt;        value = term();&lt;br /&gt;&lt;br /&gt;    while (isAddop(look)) {&lt;br /&gt;        if (look == '+') {&lt;br /&gt;            match('+');&lt;br /&gt;            value += term();&lt;br /&gt;        } else if (look == '-') {&lt;br /&gt;            match('-');&lt;br /&gt;            value -= term();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void assignment() {&lt;br /&gt;    std::string name = getName();&lt;br /&gt;    match('=');&lt;br /&gt;    if (table.count(name) == 1)&lt;br /&gt;        table[name] = expression();&lt;br /&gt;    else&lt;br /&gt;        table.insert(std::pair&lt;std::string, int&gt;(name, expression()));&lt;br /&gt;&lt;br /&gt;    std::cout &lt;&lt; name &lt;&lt; " = " &lt;&lt; table[name] &lt;&lt; std::endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void init() {&lt;br /&gt;    getChar();&lt;br /&gt;    skipWhite();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]) {&lt;br /&gt;    init();&lt;br /&gt;&lt;br /&gt;    do {&lt;br /&gt;        assignment();&lt;br /&gt;        newLine();&lt;br /&gt;    } while ((look != '.') &amp;&amp; (look != '\n'));&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 30 Aug 2007 14:45:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4481</guid>
      <author>scvalex (Alexandru Scvortov)</author>
    </item>
    <item>
      <title>convert between characters and values</title>
      <link>http://snippets.dzone.com/posts/show/4041</link>
      <description>// character to ASCII value: use ?&lt;br /&gt;&lt;code&gt;&lt;br /&gt;?a     # =&gt; 97&lt;br /&gt;?\n    # =&gt; 10&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// string to integer: use []&lt;br /&gt;&lt;code&gt;&lt;br /&gt;'a'[0]        # =&gt; 97&lt;br /&gt;'hallo'[1]    # =&gt; 97&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// integer / number to character: use .chr&lt;br /&gt;&lt;code&gt;&lt;br /&gt;97.chr     # =&gt; "a"&lt;br /&gt;10.chr     # =&gt; "\n"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;//more info: "Ruby Cookbook", O'Reilly</description>
      <pubDate>Fri, 18 May 2007 15:34:49 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4041</guid>
      <author>ovhaag (Oliver Haag)</author>
    </item>
    <item>
      <title>Javascript: convert integer to word (e.g. 18 -&gt; "eighteen")</title>
      <link>http://snippets.dzone.com/posts/show/3710</link>
      <description>// Convert a positive integer less than 1000 to its word representation.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var units = new Array ("Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen");&lt;br /&gt;var tens = new Array ("Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety");&lt;br /&gt;&lt;br /&gt;function num(it) {&lt;br /&gt;	var theword = "";&lt;br /&gt;	var started;&lt;br /&gt;	if (it&gt;999) return "Lots";&lt;br /&gt;	if (it==0) return units[0];&lt;br /&gt;	for (var i = 9; i &gt;= 1; i--){&lt;br /&gt;		if (it&gt;=i*100) {&lt;br /&gt;			theword += units[i];&lt;br /&gt;			started = 1;&lt;br /&gt;			theword += " hundred";&lt;br /&gt;			if (it!=i*100) theword += " and ";&lt;br /&gt;			it -= i*100;&lt;br /&gt;			i=0;&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;	&lt;br /&gt;	for (var i = 9; i &gt;= 2; i--){&lt;br /&gt;		if (it&gt;=i*10) {&lt;br /&gt;			theword += (started?tens[i-2].toLowerCase():tens[i-2]);&lt;br /&gt;			started = 1;&lt;br /&gt;			if (it!=i*10) theword += "-";&lt;br /&gt;			it -= i*10;&lt;br /&gt;			i=0&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;	&lt;br /&gt;	for (var i=1; i &lt; 20; i++) {&lt;br /&gt;		if (it==i) {&lt;br /&gt;			theword += (started?units[i].toLowerCase():units[i]);&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;	return theword;&lt;br /&gt;}&lt;/code&gt;</description>
      <pubDate>Tue, 20 Mar 2007 22:15:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3710</guid>
      <author>maximile (Max Williams)</author>
    </item>
    <item>
      <title>Integer Sqrt</title>
      <link>http://snippets.dzone.com/posts/show/2715</link>
      <description>This code calculate the square root of a integer.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;unsigned int sqrt(unsigned int n){&lt;br /&gt;    unsigned int a;&lt;br /&gt;    for (a=0;n&gt;=(2*a)+1;n-=(2*a++)+1);&lt;br /&gt;    return a;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 26 Sep 2006 02:05:15 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2715</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>BigNumber //JavaScript Class</title>
      <link>http://snippets.dzone.com/posts/show/2206</link>
      <description>&lt;a href="http://jsfromhell.com/classes/bignumber"&gt;&lt;br /&gt;Offers a extremely high precision level to make mathematical operations. For integers there is no limits and for floating point numbers, the class allows setting the maximum precision.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;br /&gt;The class always returns new instances of BigNumber on the operations, so to the set value of a object, use the "set" method.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/classes/bignumber [v1.0]&lt;br /&gt;&lt;br /&gt;BigNumber = function(n, p, r){&lt;br /&gt;    var o = this, i;&lt;br /&gt;    if(n instanceof BigNumber){&lt;br /&gt;        for(i in {precision: 0, roundType: 0, _sign: 0, _dec: 0}) o[i] = n[i];&lt;br /&gt;        o._buffer = n._buffer.slice();&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    o.precision = isNaN(p = Math.abs(p)) ? BigNumber.defaultPrecision : p;&lt;br /&gt;    o.roundType = isNaN(r = Math.abs(r)) ? BigNumber.defaultRoundType : r;&lt;br /&gt;    o._sign = (n += "").charAt(0) == "-";&lt;br /&gt;    o._dec = ((n = n.replace(/[^\d.]/g, "").split(".", 2))[0] = n[0].replace(/^0+/, "") || "0").length;&lt;br /&gt;    for(i = (n = o._buffer = (n.join("") || "0").split("")).length; i; n[--i] = +n[i]);&lt;br /&gt;    o.round();&lt;br /&gt;};&lt;br /&gt;with({$: BigNumber, o: BigNumber.prototype}){&lt;br /&gt;    $.ROUND_HALF_EVEN = ($.ROUND_HALF_DOWN = ($.ROUND_HALF_UP = ($.ROUND_FLOOR = ($.ROUND_CEIL = ($.ROUND_DOWN = ($.ROUND_UP = 0) + 1) + 1) + 1) + 1) + 1) + 1;&lt;br /&gt;    $.defaultPrecision = 40;&lt;br /&gt;    $.defaultRoundType = $.ROUND_HALF_UP;&lt;br /&gt;    o.add = function(n){&lt;br /&gt;        if(this._sign != (n = new BigNumber(n))._sign) return n._sign = !n._sign, this.subtract(n);&lt;br /&gt;        var o = new BigNumber(this), a = o._buffer, b = n._buffer, la = o._dec,&lt;br /&gt;        lb = n._dec, n = Math.max(la, lb), i, r;&lt;br /&gt;        la != lb &amp;&amp; ((lb = la - lb) &gt; 0 ? o._zeroes(b, lb, 1) : o._zeroes(a, -lb, 1));&lt;br /&gt;        i = (la = a.length) == (lb = b.length) ? a.length : ((lb = la - lb) &gt; 0 ? o._zeroes(b, lb) : o._zeroes(a, -lb)).length;&lt;br /&gt;        for(r = 0; i; r = (a[--i] = a[i] + b[i] + r) / 10 &gt;&gt;&gt; 0, a[i] %= 10);&lt;br /&gt;        return r &amp;&amp; ++n &amp;&amp; a.unshift(r), o._dec = n, o.round();&lt;br /&gt;    };&lt;br /&gt;    o.subtract = function(n){&lt;br /&gt;        if(this._sign != (n = new BigNumber(n))._sign) return n._sign = !n._sign, this.add(n);&lt;br /&gt;        var o = new BigNumber(this), x = o.compare(n) + 1, a = x ? o : n, b = x ? n : o, la = a._dec, lb = b._dec, n = la, i, j;&lt;br /&gt;        a = a._buffer, b = b._buffer, la != lb &amp;&amp; ((lb = la - lb) &gt; 0 ? o._zeroes(b, lb, 1) : o._zeroes(a, -lb, 1));&lt;br /&gt;        for(i = (la = a.length) == (lb = b.length) ? a.length : ((lb = la - lb) &gt; 0 ? o._zeroes(b, lb) : o._zeroes(a, -lb)).length; i;){&lt;br /&gt;            if(a[--i] &lt; b[i]){&lt;br /&gt;                for(j = i; j &amp;&amp; !a[--j]; a[j] = 9);&lt;br /&gt;                --a[j], a[i] += 10;&lt;br /&gt;            }&lt;br /&gt;            b[i] = a[i] - b[i];&lt;br /&gt;        }&lt;br /&gt;        return o._sign = !x, o._dec = n, o._buffer = b, o.round();&lt;br /&gt;    };&lt;br /&gt;    o.multiply = function(n){&lt;br /&gt;        var o = new BigNumber(this), r = o.compare(n = new BigNumber(n)) + 1, a = (r ? o : n)._buffer,&lt;br /&gt;        b = (r ? n : o)._buffer, la = a.length, lb = b.length, x = new BigNumber, i, j, s;&lt;br /&gt;        for(i = lb; i; x.set(x.add(new BigNumber(s.join("")))))&lt;br /&gt;            for(s = (new Array(lb - --i)).join("0").split(""), r = 0, j = la; j;&lt;br /&gt;            r += a[--j] * b[i], s.unshift(r % 10), r = r / 10 &gt;&gt;&gt; 0);&lt;br /&gt;        return r &amp;&amp; x._buffer.unshift(r), o._dec = (o._buffer = x._buffer).length - la - lb + o._dec + n._dec, o.round();&lt;br /&gt;    };&lt;br /&gt;    o.divide = function(n){&lt;br /&gt;        if((n = new BigNumber(n)) == "0") throw new Error("division by 0");&lt;br /&gt;        var o = new BigNumber(this), a = o._buffer, b = n._buffer, la = a.length - o._dec,&lt;br /&gt;        lb = b.length - n._dec, s = a._sign != b._sign, dec = 0, buffer = [], x = new BigNumber, y, i;&lt;br /&gt;        la != lb &amp;&amp; ((lb = la - lb) &gt; 0 ? o._zeroes(b, lb) : o._zeroes(a, -lb));&lt;br /&gt;        o._dec = a.length, n._dec = b.length;&lt;br /&gt;        b = n, a._sign = false, b._sign = false;&lt;br /&gt;        while(o != 0 &amp;&amp; (buffer.length - dec) &lt;= o.precision){&lt;br /&gt;            x.set(0);&lt;br /&gt;            for(i = 0; o.compare(y = x.add(b)) + 1 &amp;&amp; ++i; x.set(y));&lt;br /&gt;            if(!i){&lt;br /&gt;                do ++i, o._buffer.push(0), ++o._dec;&lt;br /&gt;                while(o.compare(b) &lt; 0);&lt;br /&gt;                !dec &amp;&amp; (!buffer.length &amp;&amp; buffer.push(0), dec = buffer.length);&lt;br /&gt;                o._zeroes(buffer, --i);&lt;br /&gt;                continue;&lt;br /&gt;            }&lt;br /&gt;            o.set(o.subtract(x)), buffer.push(i);&lt;br /&gt;        }&lt;br /&gt;        return o._buffer = buffer, o._dec = dec ? dec : buffer.length, o.round();&lt;br /&gt;    };&lt;br /&gt;    o.mod = function(n){&lt;br /&gt;        return this.subtract(this.divide(n).intPart().multiply(n));&lt;br /&gt;    };&lt;br /&gt;    o.pow = function(n){&lt;br /&gt;        var o = new BigNumber(this), i;&lt;br /&gt;        if(n == 0) return o.set(1);&lt;br /&gt;        for(i = Math.abs(n); --i; o.set(o.multiply(this)));&lt;br /&gt;        return n &lt; 0 ? o.set((new BigNumber(1)).divide(o)) : o;&lt;br /&gt;    };&lt;br /&gt;    o.set = function(n){&lt;br /&gt;        return this.constructor(n), this;&lt;br /&gt;    };&lt;br /&gt;    o.compare = function(n){&lt;br /&gt;        var a = this, la = this._dec, b = n, lb = n._dec, i, l;&lt;br /&gt;        if(la != lb) return la &gt; lb ? 1 : -1;&lt;br /&gt;        for(la = (a = a._buffer).length, lb = (b = b._buffer).length, i = -1, l = Math.min(la, lb); ++i &lt; l;)&lt;br /&gt;            if(a[i] != b[i]) return a[i] &gt; b[i] ? 1 : -1;&lt;br /&gt;        return la != lb ? la &gt; lb ? 1 : -1 : 0;&lt;br /&gt;    }&lt;br /&gt;    o.negate = function(){&lt;br /&gt;        var n = new BigNumber(this); return n._sign ^= 1, n;&lt;br /&gt;    };&lt;br /&gt;    o.abs = function(){&lt;br /&gt;        var n = new BigNumber(this); return n._sign = 0, n;&lt;br /&gt;    };&lt;br /&gt;    o.intPart = function(){&lt;br /&gt;        return new BigNumber((this._sign ? "-" : "") + (this._buffer.slice(0, this._dec).join("") || "0"));&lt;br /&gt;    };&lt;br /&gt;    o.valueOf = o.toString = function(){&lt;br /&gt;        var o = this;&lt;br /&gt;        return (o._sign ? "-" : "") + (o._buffer.slice(0, o._dec).join("") || "0") + (o._dec != o._buffer.length ? "." + o._buffer.slice(o._dec).join("") : "");&lt;br /&gt;    };&lt;br /&gt;    o._zeroes = function(n, l, t){&lt;br /&gt;        var s = ["push", "unshift"][t || 0];&lt;br /&gt;        for(++l; --l;  n[s](0));&lt;br /&gt;        return n;&lt;br /&gt;    };&lt;br /&gt;    o.round = function(){&lt;br /&gt;        if("_rounding" in this) return this;&lt;br /&gt;        var $ = BigNumber, r = this.roundType, b = this._buffer, d, p, n, x;&lt;br /&gt;        for(this._rounding = true; this._dec &gt; 1 &amp;&amp; !b[0]; --this._dec, b.shift());&lt;br /&gt;        for(d = this._dec, p = this.precision + d, n = b[p]; b.length &gt; d &amp;&amp; !b[b.length -1]; b.pop());&lt;br /&gt;        x = (this._sign ? "-" : "") + (p - d ? "0." + this._zeroes([], p - d - 1).join("") : "") + 1;&lt;br /&gt;        if(b.length &gt; p){&lt;br /&gt;            n &amp;&amp; (r == $.DOWN ? false : r == $.UP ? true : r == $.CEIL ? !this._sign&lt;br /&gt;            : r == $.FLOOR ? this._sign : r == $.HALF_UP ? n &gt;= 5 : r == $.HALF_DOWN ? n &gt; 5&lt;br /&gt;            : r == $.HALF_EVEN ? n &gt;= 5 &amp;&amp; b[p - 1] &amp; 1 : false) &amp;&amp; this.add(x);&lt;br /&gt;            b.splice(p, b.length - p);&lt;br /&gt;        }&lt;br /&gt;        return delete this._rounding, this;&lt;br /&gt;    };&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Usage&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;var x = new BigNumber("10"), y = new BigNumber("-2");&lt;br /&gt;alert(x.pow(y));&lt;br /&gt;alert(x.pow(1234));&lt;br /&gt;&lt;br /&gt;alert((new BigNumber("99999999999999999999999999999999999")).add("999999999999999999999999999.99999999999999999"));&lt;br /&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 15 Jun 2006 20:19:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2206</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Splitting an integer list in TSQL</title>
      <link>http://snippets.dzone.com/posts/show/774</link>
      <description>Revised: 2006-02-23 - fixed various bugs by using new algorithm&lt;br /&gt;Often times I have a list of integers I need to pass to the database to get worked on.  Such as checkboxes on a web page or some other list.  I needed some TSQL that would take a text string and split it by a separator, in this case a comma.  The following is the result of that need.&lt;br /&gt;The way I normally use it is in a stored procedure like the one below with several text type arguments.  Sometimes I use a variation designed to split a list of strings separated by a special character sequence.  Image two lists, one of the ids and one of the data.  You parse the first list to get a table of the ids and you parse the second list to get the data and insert/update as appropriate.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[uspSplitIntegerList]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)&lt;br /&gt;   DROP PROCEDURE [dbo].[uspSplitIntegerList]&lt;br /&gt;GO&lt;br /&gt;                                      &lt;br /&gt;SET QUOTED_IDENTIFIER ON &lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */&lt;br /&gt;-- uspSplitIntegerList&lt;br /&gt;--&lt;br /&gt;-- Description:&lt;br /&gt;--		splits a comma separated list of integers and returns the integer list&lt;br /&gt;--&lt;br /&gt;-- Arguments:&lt;br /&gt;--		@list_integers					- list of integers&lt;br /&gt;--&lt;br /&gt;-- Notes:&lt;br /&gt;-- 02/22/2006 - WSR : use DATALENGTH instead of LEN throughout because LEN doesn't count trailing blanks&lt;br /&gt;--&lt;br /&gt;-- History:&lt;br /&gt;-- 02/22/2006 - WSR : revised algorithm to account for items crossing 8000 character boundary&lt;br /&gt;--&lt;br /&gt;CREATE PROCEDURE uspSplitIntegerList&lt;br /&gt;	@list_integers			text&lt;br /&gt;AS&lt;br /&gt;&lt;br /&gt;SET NOCOUNT ON&lt;br /&gt;&lt;br /&gt;DECLARE @InputLen			integer			-- input text length&lt;br /&gt;DECLARE @TextPos			integer			-- current position within input text&lt;br /&gt;DECLARE @Chunk				varchar(8000)	-- chunk within input text&lt;br /&gt;DECLARE @ChunkPos			integer			-- current position within chunk&lt;br /&gt;DECLARE @DelimPos			integer			-- position of delimiter&lt;br /&gt;DECLARE @ChunkLen			integer			-- chunk length&lt;br /&gt;DECLARE @DelimLen			integer			-- delimiter length&lt;br /&gt;DECLARE @Delimiter      varchar(3)		-- delimiter&lt;br /&gt;DECLARE @ItemBegPos		integer			-- item starting position in text&lt;br /&gt;DECLARE @ItemOrder		integer			-- item order in list&lt;br /&gt;&lt;br /&gt;-- create table to hold list items&lt;br /&gt;-- actually their positions because we may want to scrub this list eliminating bad entries before substring is applied&lt;br /&gt;CREATE TABLE #list_items ( item_order integer, item_begpos integer, item_endpos integer )&lt;br /&gt;&lt;br /&gt;-- process list&lt;br /&gt;IF @list_integers IS NOT NULL&lt;br /&gt;   BEGIN&lt;br /&gt;&lt;br /&gt;	-- initialize&lt;br /&gt;   -- notice that this loop assumes a delimiter length of 1&lt;br /&gt;   -- if the delimiter is longer we have to deal with stuff like delimiters straddling the chunk boundaries&lt;br /&gt;   SET @InputLen = DATALENGTH(@list_integers)&lt;br /&gt;   SET @TextPos = 1&lt;br /&gt;	SET @Delimiter = ','&lt;br /&gt;	SET @DelimLen = DATALENGTH(@Delimiter)&lt;br /&gt;   SET @ItemBegPos = 1&lt;br /&gt;   SET @ItemOrder = 1&lt;br /&gt;   SET @ChunkLen = 1&lt;br /&gt;&lt;br /&gt;   -- cycle through input processing chunks&lt;br /&gt;   WHILE @TextPos &lt;= @InputLen AND @ChunkLen &lt;&gt; 0&lt;br /&gt;      BEGIN&lt;br /&gt;&lt;br /&gt;      -- get current chunk&lt;br /&gt;      SET @Chunk = SUBSTRING(@list_integers, @TextPos, 8000)&lt;br /&gt;&lt;br /&gt;      -- setup initial variable values&lt;br /&gt;      SET @ChunkPos = 1&lt;br /&gt;      SET @ChunkLen = DATALENGTH(@Chunk)&lt;br /&gt;      SET @DelimPos = CHARINDEX(@Delimiter, @Chunk, @ChunkPos)&lt;br /&gt;&lt;br /&gt;      -- loop over the chunk, until the last delimiter&lt;br /&gt;      WHILE @ChunkPos &lt;= @ChunkLen AND @DelimPos &lt;&gt; 0&lt;br /&gt;         BEGIN&lt;br /&gt;&lt;br /&gt;			-- insert position&lt;br /&gt;         INSERT INTO #list_items (item_order, item_begpos, item_endpos)&lt;br /&gt;         VALUES (@ItemOrder, @ItemBegPos, (@TextPos + @DelimPos - 1) - 1)&lt;br /&gt;         &lt;br /&gt;         -- adjust positions&lt;br /&gt;         SET @ItemOrder = @ItemOrder + 1&lt;br /&gt;         SET @ItemBegPos = (@TextPos + @DelimPos - 1) + @DelimLen&lt;br /&gt;         SET @ChunkPos = @DelimPos + @DelimLen&lt;br /&gt;      &lt;br /&gt;         -- find next delimiter      &lt;br /&gt;         SET @DelimPos = CHARINDEX(@Delimiter, @Chunk, @ChunkPos)&lt;br /&gt;&lt;br /&gt;         END&lt;br /&gt;&lt;br /&gt;      -- adjust positions&lt;br /&gt;      SET @TextPos = @TextPos + @ChunkLen&lt;br /&gt;&lt;br /&gt;      END&lt;br /&gt;&lt;br /&gt;	-- handle last item&lt;br /&gt;   IF @ItemBegPos &lt;= @InputLen&lt;br /&gt;      BEGIN&lt;br /&gt;&lt;br /&gt;      -- insert position&lt;br /&gt;      INSERT INTO #list_items (item_order, item_begpos, item_endpos)&lt;br /&gt;      VALUES (@ItemOrder, @ItemBegPos, @InputLen)&lt;br /&gt;&lt;br /&gt;      END&lt;br /&gt;&lt;br /&gt;	-- delete the bad items&lt;br /&gt;   DELETE FROM #list_items&lt;br /&gt;   WHERE item_endpos &lt; item_begpos&lt;br /&gt;&lt;br /&gt;   -- return list items&lt;br /&gt;	SELECT CAST(SUBSTRING(@list_integers, item_begpos, (item_endpos - item_begpos + 1)) AS integer) AS item_integer, item_order, item_begpos, item_endpos&lt;br /&gt;   FROM #list_items&lt;br /&gt;   WHERE ISNUMERIC(SUBSTRING(@list_integers, item_begpos, (item_endpos - item_begpos + 1))) = 1&lt;br /&gt;   ORDER BY item_order&lt;br /&gt;&lt;br /&gt;   END&lt;br /&gt;&lt;br /&gt;DROP TABLE #list_items&lt;br /&gt;&lt;br /&gt;RETURN&lt;br /&gt;&lt;br /&gt;/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER OFF &lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 01 Oct 2005 03:35:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/774</guid>
      <author>Will_Rickards (Will Rickards)</author>
    </item>
    <item>
      <title>Javascript IntegerBoxControl</title>
      <link>http://snippets.dzone.com/posts/show/703</link>
      <description>In input forms on web pages you often have to validate input as an integer or more precisely a positive integer greater than zero.  Here is a control implementation of sorts.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// Integer Box Control&lt;br /&gt;// &lt;br /&gt;// Notes&lt;br /&gt;// To create an integer box control, call the SetupIntegerBoxControl function.&lt;br /&gt;// It should be passed an input element with type of text.&lt;br /&gt;// The onchange event of the input element will invoke the validation function.&lt;br /&gt;// The validation function ensures only positive integer data is entered.&lt;br /&gt;//&lt;br /&gt;// History&lt;br /&gt;// 09/08/2005 - WSR : created based on dateboxcontrol&lt;br /&gt;&lt;br /&gt;// hooks functionality up to given textbox&lt;br /&gt;function SetupIntegerBoxControl( ctlIntegerBox )&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   // if a valid object was given&lt;br /&gt;   if (ctlIntegerBox)&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // validate current contents&lt;br /&gt;      IntegerBoxControl_Validate( ctlIntegerBox );&lt;br /&gt;&lt;br /&gt;      // hook up event handlers&lt;br /&gt;      ctlIntegerBox.onchange = function () { IntegerBoxControl_Validate(this); };&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// validates the input&lt;br /&gt;function IntegerBoxControl_Validate( ctlIntegerBox )&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   // parse the input as an integer&lt;br /&gt;   var intValue = parseInt(ctlIntegerBox.value, 10);&lt;br /&gt;&lt;br /&gt;   // if this is not an integer&lt;br /&gt;   if (isNaN(intValue))&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // clear text box&lt;br /&gt;      ctlIntegerBox.value = '';&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;   // if this is an integer&lt;br /&gt;   else&lt;br /&gt;      {&lt;br /&gt;   &lt;br /&gt;      switch (true)&lt;br /&gt;         {&lt;br /&gt;         case (intValue == 0) :&lt;br /&gt;&lt;br /&gt;            // clear text box&lt;br /&gt;            ctlIntegerBox.value = '';&lt;br /&gt;&lt;br /&gt;            break;&lt;br /&gt;         case (intValue &gt; 0) :&lt;br /&gt;&lt;br /&gt;            // put the parsed integer value in the text box&lt;br /&gt;            ctlIntegerBox.value = intValue.toString();&lt;br /&gt;&lt;br /&gt;            break;&lt;br /&gt;         case (intValue &lt; 0) :&lt;br /&gt;&lt;br /&gt;            // put the positive parsed integer value in the text box&lt;br /&gt;            ctlIntegerBox.value = (-1 * intValue).toString();&lt;br /&gt;&lt;br /&gt;            break;&lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I forgot to mention before how to hook it up in code.&lt;br /&gt;I usually add an attribute bvr-datatype="integer" to the input element.  bvr stands for behaviour.  I hook up the control in the onload event.  Here is a recent example.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// set window load event handler&lt;br /&gt;window.onload = window_load;&lt;br /&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// window_load&lt;br /&gt;// Description: event handler for window load event&lt;br /&gt;// Arguments: none&lt;br /&gt;// Dependencies:&lt;br /&gt;//    SetupDateBoxControl (dateboxcontrol.js)&lt;br /&gt;//    SetupIntegerBoxControl (integerboxcontrol.js)&lt;br /&gt;//    frmSearch_submit&lt;br /&gt;//    cmdRequesting_click&lt;br /&gt;//    txtRequesting_change&lt;br /&gt;//    frmRecent_submit&lt;br /&gt;//&lt;br /&gt;function window_load()&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   // get input elements in document&lt;br /&gt;   var arrInputs = document.getElementsByTagName('INPUT');&lt;br /&gt;&lt;br /&gt;   // cycle through input elements&lt;br /&gt;   for ( var i = 0; i &lt; arrInputs.length; i++ ) &lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // if this is a datebox control&lt;br /&gt;      if ( 'date' == arrInputs[i].getAttribute('bvr-datatype') &amp;&amp; 'text' == arrInputs[i].getAttribute('type') )&lt;br /&gt;         {&lt;br /&gt;&lt;br /&gt;         // setup the control&lt;br /&gt;         SetupDateBoxControl( arrInputs[i] );&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      // if this is a integerbox control&lt;br /&gt;      if ( 'integer' == arrInputs[i].getAttribute('bvr-datatype') &amp;&amp; 'text' == arrInputs[i].getAttribute('type') )&lt;br /&gt;         {&lt;br /&gt;&lt;br /&gt;         // setup the control&lt;br /&gt;         SetupIntegerBoxControl( arrInputs[i] );&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   // get reference to search form&lt;br /&gt;   var elForm = document.getElementById('frmSearch');&lt;br /&gt;   if (elForm)&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // set submit event handler&lt;br /&gt;      elForm.onsubmit = frmSearch_submit;&lt;br /&gt;&lt;br /&gt;      // set cmdTimekeeperLookup click event handler&lt;br /&gt;      var elToWire = document.getElementById('cmdTimekeeperLookup');&lt;br /&gt;      if (elToWire)&lt;br /&gt;         {&lt;br /&gt;&lt;br /&gt;         elToWire.onclick = cmdRequesting_click;&lt;br /&gt;         elToWire.textbox = document.getElementById('txtRequestingTimekeeper');&lt;br /&gt;&lt;br /&gt;         // set textbox change events&lt;br /&gt;         if (elToWire.textbox)&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;            elToWire.textbox.onchange = txtRequesting_change;&lt;br /&gt;            elToWire.textbox.onblur = txtRequesting_change;&lt;br /&gt;            elToWire.textbox.label = document.getElementById('lblTimekeeperName');&lt;br /&gt;&lt;br /&gt;            if ( typeof window.strRequesting == 'undefined' )&lt;br /&gt;               window.strRequesting = ''; &lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   // get reference to recent form&lt;br /&gt;   elForm = document.getElementById('frmRecent');&lt;br /&gt;   if (elForm)&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // set submit event handler&lt;br /&gt;      elForm.onsubmit = frmRecent_submit;&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;//&lt;br /&gt;// window_load&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 13 Sep 2005 02:32:19 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/703</guid>
      <author>Will_Rickards (Will Rickards)</author>
    </item>
    <item>
      <title>Binary Data Parser //Javascript Class</title>
      <link>http://snippets.dzone.com/posts/show/685</link>
      <description>&lt;a href="http://www.jsfromhell.com/classes/binary-parser"&gt;&lt;br /&gt;&lt;br /&gt;This is a prototyped class written to serialize and unserialize binary data, so you can read and write binary data files to exchange with programs written in languages like C and Pascal.&lt;br /&gt;&lt;br /&gt;Currently the class is able to handle just the following types: signed integers (small 8 bits, short 16 bits, int 32 bits), unsigned integers (byte 8 bits, word 16 bits, dword 32 bits) and floating point (IEEE754 float 32 bits and double 64 bits).&lt;br /&gt;&lt;br /&gt;The endianess of the binary values representation can also be configured with the class.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's a php version right &lt;a href="http://www.phpclasses.org/browse/package/2454.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Code&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/classes/binary-parser [v1.0]&lt;br /&gt;&lt;br /&gt;BinaryParser = function( bigEndian, allowExceptions ){&lt;br /&gt;	this.bigEndian = bigEndian;&lt;br /&gt;	this.allowExceptions = allowExceptions;&lt;br /&gt;};&lt;br /&gt;with( { p: BinaryParser.prototype } ){&lt;br /&gt;	with( {p: ( p.Buffer = function( bigEndian, buffer ){ this.bigEndian = bigEndian || 0; this.buffer = []; this.setBuffer( buffer ); } ).prototype } ){&lt;br /&gt;		p.setBuffer = function( data ){&lt;br /&gt;			if( data ){&lt;br /&gt;				for( var l, i = l = data.length, b = this.buffer = new Array( l ); i; b[l - i] = data.charCodeAt( --i ) );&lt;br /&gt;				this.bigEndian &amp;&amp; b.reverse();&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;		p.hasNeededBits = function( neededBits ){&lt;br /&gt;			return this.buffer.length &gt;= -( -neededBits &gt;&gt; 3 );&lt;br /&gt;		};&lt;br /&gt;		p.checkBuffer = function( neededBits ){&lt;br /&gt;			if( !this.hasNeededBits( neededBits ) )&lt;br /&gt;				throw new Error( "checkBuffer::missing bytes" );&lt;br /&gt;		};&lt;br /&gt;		p.readBits = function( start, length ){&lt;br /&gt;			//shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni)&lt;br /&gt;			function shl( a, b ){&lt;br /&gt;				for( ; b--; a = ( ( a %= 0x7fffffff + 1 ) &amp; 0x40000000 ) == 0x40000000 ? a * 2 : ( a - 0x40000000 ) * 2 + 0x7fffffff + 1 );&lt;br /&gt;				return a;&lt;br /&gt;			}&lt;br /&gt;			if( start &lt; 0 || length &lt;= 0 )&lt;br /&gt;				return 0;&lt;br /&gt;			this.checkBuffer( start + length );&lt;br /&gt;			for( var offsetLeft, offsetRight = start % 8, curByte = this.buffer.length - ( start &gt;&gt; 3 ) - 1, lastByte = this.buffer.length + ( -( start + length ) &gt;&gt; 3 ), diff = curByte - lastByte, sum = ( ( this.buffer[ curByte ] &gt;&gt; offsetRight ) &amp; ( ( 1 &lt;&lt; ( diff ? 8 - offsetRight : length ) ) - 1 ) ) + ( diff &amp;&amp; ( offsetLeft = ( start + length ) % 8 ) ? ( this.buffer[ lastByte++ ] &amp; ( ( 1 &lt;&lt; offsetLeft ) - 1 ) ) &lt;&lt; ( diff-- &lt;&lt; 3 ) - offsetRight : 0 ); diff; sum += shl( this.buffer[ lastByte++ ], ( diff-- &lt;&lt; 3 ) - offsetRight ) );&lt;br /&gt;			return sum;&lt;br /&gt;		};&lt;br /&gt;	}&lt;br /&gt;	p.warn = function( msg ){&lt;br /&gt;		if( this.allowExceptions )&lt;br /&gt;			throw new Error( msg );&lt;br /&gt;		return 1;&lt;br /&gt;	};&lt;br /&gt;	p.decodeFloat = function( data, precisionBits, exponentBits ){&lt;br /&gt;		var b = new this.Buffer( this.bigEndian, data );&lt;br /&gt;		b.checkBuffer( precisionBits + exponentBits + 1 );&lt;br /&gt;		var bias = Math.pow( 2, exponentBits - 1 ) - 1, signal = b.readBits( precisionBits + exponentBits, 1 ), exponent = b.readBits( precisionBits, exponentBits ), significand = 0,&lt;br /&gt;		divisor = 2, curByte = b.buffer.length + ( -precisionBits &gt;&gt; 3 ) - 1;&lt;br /&gt;		do&lt;br /&gt;			for( var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 &lt;&lt; startBit; mask &gt;&gt;= 1; ( byteValue &amp; mask ) &amp;&amp; ( significand += 1 / divisor ), divisor *= 2 );&lt;br /&gt;		while( precisionBits -= startBit );&lt;br /&gt;		return exponent == ( bias &lt;&lt; 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 );&lt;br /&gt;	};&lt;br /&gt;	p.decodeInt = function( data, bits, signed ){&lt;br /&gt;		var b = new this.Buffer( this.bigEndian, data ), x = b.readBits( 0, bits ), max = Math.pow( 2, bits );&lt;br /&gt;		return signed &amp;&amp; x &gt;= max / 2 ? x - max : x;&lt;br /&gt;	};&lt;br /&gt;	p.encodeFloat = function( data, precisionBits, exponentBits ){&lt;br /&gt;		var bias = Math.pow( 2, exponentBits - 1 ) - 1, minExp = -bias + 1, maxExp = bias, minUnnormExp = minExp - precisionBits,&lt;br /&gt;		status = isNaN( n = parseFloat( data ) ) || n == -Infinity || n == +Infinity ? n : 0,&lt;br /&gt;		exp = 0, len = 2 * bias + 1 + precisionBits + 3, bin = new Array( len ),&lt;br /&gt;		signal = ( n = status !== 0 ? 0 : n ) &lt; 0, n = Math.abs( n ), intPart = Math.floor( n ), floatPart = n - intPart,&lt;br /&gt;		i, lastBit, rounded, j, result;&lt;br /&gt;		for( i = len; i; bin[--i] = 0 );&lt;br /&gt;		for( i = bias + 2; intPart &amp;&amp; i; bin[--i] = intPart % 2, intPart = Math.floor( intPart / 2 ) );&lt;br /&gt;		for( i = bias + 1; floatPart &gt; 0 &amp;&amp; i; ( bin[++i] = ( ( floatPart *= 2 ) &gt;= 1 ) - 0 ) &amp;&amp; --floatPart );&lt;br /&gt;		for( i = -1; ++i &lt; len &amp;&amp; !bin[i]; );&lt;br /&gt;		if( bin[( lastBit = precisionBits - 1 + ( i = ( exp = bias + 1 - i ) &gt;= minExp &amp;&amp; exp &lt;= maxExp ? i + 1 : bias + 1 - ( exp = minExp - 1 ) ) ) + 1] ){&lt;br /&gt;			if( !( rounded = bin[lastBit] ) )&lt;br /&gt;				for( j = lastBit + 2; !rounded &amp;&amp; j &lt; len; rounded = bin[j++] );&lt;br /&gt;			for( j = lastBit + 1; rounded &amp;&amp; --j &gt;= 0; ( bin[j] = !bin[j] - 0 ) &amp;&amp; ( rounded = 0 ) );&lt;br /&gt;		}&lt;br /&gt;		for( i = i - 2 &lt; 0 ? -1 : i - 3; ++i &lt; len &amp;&amp; !bin[i]; );&lt;br /&gt;		if( ( exp = bias + 1 - i ) &gt;= minExp &amp;&amp; exp &lt;= maxExp )&lt;br /&gt;			++i;&lt;br /&gt;		else if( exp &lt; minExp ){&lt;br /&gt;			exp != bias + 1 - len &amp;&amp; exp &lt; minUnnormExp &amp;&amp; this.warn( "encodeFloat::float underflow" );&lt;br /&gt;			i = bias + 1 - ( exp = minExp - 1 );&lt;br /&gt;		}&lt;br /&gt;		if( intPart || status !== 0 ){&lt;br /&gt;			this.warn( intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status );&lt;br /&gt;			exp = maxExp + 1;&lt;br /&gt;			i = bias + 2;&lt;br /&gt;			if( status == -Infinity )&lt;br /&gt;				signal = 1;&lt;br /&gt;			else if( isNaN( status ) )&lt;br /&gt;				bin[i] = 1;&lt;br /&gt;		}&lt;br /&gt;		for( n = Math.abs( exp + bias ), j = exponentBits + 1, result = ""; --j; result = ( n % 2 ) + result, n = n &gt;&gt;= 1 );&lt;br /&gt;		for( n = 0, j = 0, i = ( result = ( signal ? "1" : "0" ) + result + bin.slice( i, i + precisionBits ).join( "" ) ).length, r = []; i; j = ( j + 1 ) % 8 ){&lt;br /&gt;			n += ( 1 &lt;&lt; j ) * result.charAt( --i );&lt;br /&gt;			if( j == 7 ){&lt;br /&gt;				r[r.length] = String.fromCharCode( n );&lt;br /&gt;				n = 0;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		r[r.length] = n ? String.fromCharCode( n ) : "";&lt;br /&gt;		return ( this.bigEndian ? r.reverse() : r ).join( "" );&lt;br /&gt;	};&lt;br /&gt;	p.encodeInt = function( data, bits, signed ){&lt;br /&gt;		var max = Math.pow( 2, bits );&lt;br /&gt;		( data &gt;= max || data &lt; -( max &gt;&gt; 1 ) ) &amp;&amp; this.warn( "encodeInt::overflow" ) &amp;&amp; ( data = 0 );&lt;br /&gt;		data &lt; 0 &amp;&amp; ( data += max );&lt;br /&gt;		for( var r = []; data; r[r.length] = String.fromCharCode( data % 256 ), data = Math.floor( data / 256 ) );&lt;br /&gt;		for( bits = -( -bits &gt;&gt; 3 ) - r.length; bits--; r[r.length] = "\0" );&lt;br /&gt;		return ( this.bigEndian ? r.reverse() : r ).join( "" );&lt;br /&gt;	};&lt;br /&gt;	p.toSmall    = function( data ){ return this.decodeInt( data,  8, true  ); };&lt;br /&gt;	p.fromSmall  = function( data ){ return this.encodeInt( data,  8, true  ); };&lt;br /&gt;	p.toByte     = function( data ){ return this.decodeInt( data,  8, false ); };&lt;br /&gt;	p.fromByte   = function( data ){ return this.encodeInt( data,  8, false ); };&lt;br /&gt;	p.toShort    = function( data ){ return this.decodeInt( data, 16, true  ); };&lt;br /&gt;	p.fromShort  = function( data ){ return this.encodeInt( data, 16, true  ); };&lt;br /&gt;	p.toWord     = function( data ){ return this.decodeInt( data, 16, false ); };&lt;br /&gt;	p.fromWord   = function( data ){ return this.encodeInt( data, 16, false ); };&lt;br /&gt;	p.toInt      = function( data ){ return this.decodeInt( data, 32, true  ); };&lt;br /&gt;	p.fromInt    = function( data ){ return this.encodeInt( data, 32, true  ); };&lt;br /&gt;	p.toDWord    = function( data ){ return this.decodeInt( data, 32, false ); };&lt;br /&gt;	p.fromDWord  = function( data ){ return this.encodeInt( data, 32, false ); };&lt;br /&gt;	p.toFloat    = function( data ){ return this.decodeFloat( data, 23, 8   ); };&lt;br /&gt;	p.fromFloat  = function( data ){ return this.encodeFloat( data, 23, 8   ); };&lt;br /&gt;	p.toDouble   = function( data ){ return this.decodeFloat( data, 52, 11  ); };&lt;br /&gt;	p.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11  ); };&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 09 Sep 2005 07:44:38 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/685</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>change integer variables content</title>
      <link>http://snippets.dzone.com/posts/show/441</link>
      <description>&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;#include&lt;conio.h&gt;&lt;br /&gt;void main(){&lt;br /&gt;	int a, b;&lt;br /&gt;	clrscr();&lt;br /&gt;&lt;br /&gt;	printf( "Digite a= " );&lt;br /&gt;	scanf( "%d", &amp;a );&lt;br /&gt;&lt;br /&gt;	printf( "Digite b= " );&lt;br /&gt;	scanf( "%d", &amp;b );&lt;br /&gt;&lt;br /&gt;	a = b - a + ( b = a );&lt;br /&gt;&lt;br /&gt;	printf( "a= %d\nb= %d", a, b);&lt;br /&gt;	getch();&lt;br /&gt;}&lt;br /&gt;*&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 02 Jul 2005 04:02:49 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/441</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
  </channel>
</rss>
